158

在我的活动中,我有一些评分栏。但是这个酒吧的规模是如此之大!我怎样才能让它变小?

编辑

感谢 Gabriel Negut,我采用了以下风格:

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

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

4

16 回答 16

195

我发布的原始链接现在已损坏(有充分理由说明仅发布链接不是最好的方法)。您必须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"
    ... />
于 2011-05-27T14:34:13.123 回答
93

这是我在努力减少小尺寸评级栏后的解决方案,甚至没有丑陋的填充

 <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" />
于 2015-07-03T12:45:05.510 回答
65

如果您想以小尺寸显示评分栏,则只需将此代码复制并粘贴到您的项目中。

  <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" />
于 2014-06-25T11:50:30.367 回答
46

您可以在 XML 代码中对其进行设置RatingBar,使用scaleXscaleY进行相应的调整。“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" />
于 2014-03-03T04:08:07.713 回答
43

下面的代码片段为我调整 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"/>

在此处输入图像描述

于 2016-12-03T20:37:14.573 回答
12

工作示例

             <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。

于 2016-05-18T17:05:27.807 回答
10

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

 <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" />
于 2018-04-17T11:35:21.387 回答
6
<RatingBar
  style="?android:attr/ratingBarStyleIndicator"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
/>
于 2015-08-18T12:32:22.187 回答
5

RatingBar标签中,添加这两行

style="@style/Widget.AppCompat.RatingBar.Small"
android:isIndicator="false"
于 2019-10-06T02:22:23.317 回答
4

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

<RatingBar
    android:id="@+id/rating_star_value"
    style="@style/Widget.AppCompat.RatingBar.Small"
    ... />
于 2018-08-30T15:49:52.750 回答
4

如果您在带有 weightSum 的 Linearlayout 中使用评级栏。请确保您不应该为评分栏分配 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>
于 2018-06-29T13:08:24.873 回答
4

这对我有用。
检查此图像

            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" />
于 2020-07-25T04:46:39.743 回答
3
 <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"它肯定会工作!

于 2020-07-05T11:02:06.957 回答
2

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

android:layout_width="wrap_content"
android:layout_height="wrap_content"
于 2014-01-02T20:16:15.650 回答
2

RatingBar给属性:

style="?android:attr/ratingBarStyleIndicator" 
于 2015-07-10T06:41:39.010 回答
0

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

    私有LinearLayout generateRatingView(浮点值){
        线性布局线性布局评级=新线性布局(getContext());
        linearLayoutRating.setLayoutParams(new 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);
        返回线性布局评级;
    }

于 2018-12-11T11:07:16.213 回答