如何缩小Ratingbar的大小?


129

在我的活动中,我有一些评分栏。但是这个酒吧的大小太大了!如何缩小尺寸?

编辑

感谢Gabriel Negut,我使用以下样式进行了此操作:

<RatingBar
style = "?android:attr/ratingBarStyleSmall"
android:numStars = "5"
android:rating   = "4" />

现在,尺寸减小了,但星星数和等级不生效!!!为什么?我有7颗星被选中其中6颗。


您是指搜索栏吗?设置高度和宽度对我来说很好。您可以在此处发布您的代码段吗?
2011年

我建议删除“编辑”,而不是使其成为可接受的答案。那个@GabrielNegut可以编辑他的答案以包括那种解决方案。将解决方案包括在问题种类中就摆脱了问答环节。
2015年

1
style="?android:attr/ratingBarStyleSmall"为我工作。
Muhammad Shahzad

Answers:


163

我发布的原始链接现在已断开(有充分的理由说明为什么仅发布链接不是最佳方式)。您必须RatingBar使用ratingBarStyleSmall或自定义样式继承样式Widget.Material.RatingBar.Small(假设您在应用中使用Material Design)。

选项1:

<RatingBar
    android:id="@+id/ratingBar"
    style="?android:attr/ratingBarStyleSmall"
    ... />

选项2:

// styles.xml
<style name="customRatingBar"   
    parent="android:style/Widget.Material.RatingBar.Small">
    ... // Additional customizations
</style>

// layout.xml
<RatingBar
    android:id="@+id/ratingBar"
    style="@style/customRatingBar"
    ... />

21
或使用此样式style =“?android:attr / ratingBarStyleSmall”将减小大小。
Mightian 2014年

1
但是右边没有多余的填充!如何删除?
Dr.jacky

注意:使width =“ wrap_content”摆脱多余的星星
hkchakladar

72

这是我的解决方案,经过很多努力以减小尺寸小而没有难看的填充物

 <RatingBar
        android:id="@+id/listitemrating"
        style="@android:attr/ratingBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleX=".5"
        android:scaleY=".5"
        android:transformPivotX="0dp"
        android:transformPivotY="0dp"
        android:isIndicator="true"
        android:max="5" />

3
我登录只是为了就您使用transformPivot来缓解不均匀填充问题提供答案。谢谢!
imin

终于没有更多的填充了!
Uday

很棒的答案!谢谢!
valerybodak

1
比例尺使兄弟视图的对齐变得麻烦,并且不平衡边距和间距。
Prateek Gupta '18年

63

如果要以小尺寸显示等级栏,则只需将此代码复制并粘贴到项目中。

  <RatingBar
    android:id="@+id/MyRating"
    style="?android:attr/ratingBarStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/getRating"
    android:isIndicator="true"
    android:numStars="5"
    android:stepSize="0.1" />

3
什么是android:stepSize =“ 0.1”?
达尔文


还要在此页面的末尾检查我的请求。
Developine

@HammadTariqSahi很好,请继续努力,但是我的代码有任何问题吗?让我知道是否
有事

@PirFahimShah谢谢,兄弟,我还没有检查过此代码。如果您采用这种方法,则可以改进并为评级栏设置样式。
Developine

42

您可以在XML代码中对其进行设置RatingBarscaleX并使用和scaleY进行相应调整。“ 1.0”将是正常大小,“。0”中的任何内容都会减小它,大于“ 1.0”的任何内容也会增加它。

<RatingBar
  android:id="@+id/ratingBar1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:scaleX="0.5"
  android:scaleY="0.5" />

14
问题在于,即使图标较小,评分栏仍会占用与以前相同的宽度和高度。这会导致对齐问题,因为第一个和最后一个图标旁边有一堆左右填充。例如,如果您希望图标像这样的“ XXXXX”,则在缩放后,它将看起来像这样的“ ----- XXXXX -----”,其中“-”为空​​白,“ X”为图标。因此,您的评分栏似乎由于其空白而被向右推
theDazzler 2014年

1
我猜你正在使用相对布局。这是一个痛苦,但您可以通过使用android:layout_marginRight 和类似方法将其调整到正确的位置, 以使其达到您想要的方式。
ZeWolfe14年

4
要获得刻度而不在左侧创建填充,请添加android:transformPivotX =“ 0dp”
darwin

37

下面的代码段为我调整了ratingBar的大小

<RatingBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/ratingBar"
    style="?android:attr/ratingBarStyleIndicator"
    android:scaleX=".5"
    android:rating="3.5"
    android:scaleY=".5"
    android:transformPivotX="0dp"
    android:transformPivotY="0dp"
    android:max="5"/>

在此处输入图片说明


2
如何更改此评级栏的半填充,全填充和空颜色的评定栏颜色?
Ganpat Kaliya 2013年

评分参数用于填充评分栏,对吗?我使用android:rating =“ 3.5”来填充3.5星。您最多可以设置5,因为在xml中设置了max = 5。如果要更改评分栏的颜色,则必须在style.xml中创建样式,请参见以下链接:stackoverflow.com/a/35914622/2915785
Naveed Ahmad

如何以编程方式android:transformPivotX =“ 0dp” android:transformPivotY =“ 0dp”?
Salman Khakwani

1
@NaveedAhmad但是右边有没有用的填充!如何删除?
Dr.jacky '18

@海德先生检查raringbar的样式stackoverflow.com/a/24407907/2915785
Naveed Ahmad

10

工作实例

             <RatingBar
                style="@style/RatingBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:numStars="5"
                android:rating="3.5"
                android:stepSize="0.5" />

并将其添加到您的样式xml文件中

<style name="RatingBar"   
parent="android:style/Widget.Material.RatingBar.Small">
<item name="colorControlNormal">@color/primary_light</item>
<item name="colorControlActivated">@color/primary_dark</item>
</style>

这样,您无需自定义ratingBar。


9

在这里检查我的答案。实现它的最佳方法。

 <style name="MyRatingBar" parent="@android:style/Widget.RatingBar">
   <item name="android:minHeight">15dp</item>
   <item name="android:maxHeight">15dp</item>
   <item name="colorControlNormal">@color/white</item>
   <item name="colorControlActivated">@color/home_add</item>
</style>

并使用像

<RatingBar
    style="?android:attr/ratingBarStyleIndicator"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:isIndicator="false"
      android:max="5"
      android:rating="3"
      android:scaleX=".8"
      android:scaleY=".8"
      android:theme="@style/MyRatingBar" />

6
<RatingBar
  style="?android:attr/ratingBarStyleIndicator"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
/>

5
您能否详细说明如何得出解决方案?
onebree

这不允许RatingBar更改。
CopsOnRoad '18

3

如果您在LinearLayout中使用带有weightSum的“等级”栏。请确保您不要为评级栏分配layout_weight。取而代之的是,在相对布局内部放置评级栏,并赋予相对布局以权重。使等级栏宽度换行内容。

<RelativeLayout
    android:layout_width="0dp"
    android:layout_weight="30"
    android:layout_gravity="center"
    android:layout_height="wrap_content">
        <RatingBar
            android:id="@+id/userRating"
            style="@style/Widget.AppCompat.RatingBar.Small"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:stepSize="1" />
</RelativeLayout>

3

使用Widget.AppCompat.RatingBar,您有2种样式可供使用;IndicatorSmall分别用于大尺寸和小尺寸。请参见下面的示例。

<RatingBar
    android:id="@+id/rating_star_value"
    style="@style/Widget.AppCompat.RatingBar.Small"
    ... />

2

如果只需要默认样式,请确保您具有以下宽度/高度,否则numStars可能会变得混乱:

android:layout_width="wrap_content"
android:layout_height="wrap_content"

1
使用此样式style =“?android:attr / ratingBarStyleSmall”将减小大小
Mightian 2014年



0

对于那些以编程方式创建评分栏并希望设置小评分栏而不是默认大评分栏的用户

    私人LinearLayout generateRatingView(float value){
        LinearLayout linearLayoutRating = new LinearLayout(getContext());
        linearLayoutRating.setLayoutParams(新的TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,TableRow.LayoutParams.WRAP_CONTENT));
        linearLayoutRating.setGravity(Gravity.CENTER);
        RatingBar ratingBar = new RatingBar(getContext(),null,android.R.attr.ratingBarStyleSmall);
        ratingBar.setEnabled(false);
        ratingBar.setStepSize(Float.parseFloat(“ 0.5”)); //用于启用半星
        ratingBar.setNumStars(5);
        ratingBar.setRating(value);
        linearLayoutRating.addView(ratingBar);
        返回linearLayoutRating;
    }


0
 <RatingBar     android:id="@+id/id_tv_rating_bar"
                style="@style/Widget.AppCompat.RatingBar.Small"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/_20sdp"
                android:layout_marginLeft="@dimen/_80sdp"
                android:numStars="5"
                android:paddingTop="@dimen/_5sdp"
                android:rating="5" />

只需使用style="@style/Widget.AppCompat.RatingBar.Small"它就可以了!


0

这为我工作。
检查这张图片

            android:id="@+id/ratingBar"
            style="?android:attr/ratingBarStyleIndicator"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:numStars="5"
            android:scaleX=".8"
            android:scaleY=".8"
            android:stepSize="0.5"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.543"
            app:layout_constraintStart_toEndOf="@+id/title"
            app:layout_constraintTop_toTopOf="parent" />
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.