如何减小Ratingbar的大小?

Hes*_*sam 119 android rating-system

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

编辑

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

<RatingBar
style = "?android:attr/ratingBarStyleSmall"
android:numStars = "5"
android:rating   = "4" />
Run Code Online (Sandbox Code Playgroud)

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

Gab*_*gut 142

我发布的原始链接现在已经破了(有一个很好的理由,为什么发布链接不是最好的方法).您必须RatingBar使用其中一种ratingBarStyleSmall或自定义样式Widget.Material.RatingBar.Small(假设您在应用中使用Material Design)来设置样式.

选项1:

<RatingBar
    android:id="@+id/ratingBar"
    style="?android:attr/ratingBarStyleSmall"
    ... />
Run Code Online (Sandbox Code Playgroud)

选项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"
    ... />
Run Code Online (Sandbox Code Playgroud)

  • 或使用此样式style ="?android:attr/ratingBarStyleSmall"将减小大小. (19认同)
  • 给定的链接被破坏了. (11认同)
  • 但是右边有一个无用的额外填充!怎么去掉啊?! (2认同)

Sri*_*rni 62

这是我的解决方案,经过大量努力降低小尺寸的评级栏,甚至没有丑陋的填充

 <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" />
Run Code Online (Sandbox Code Playgroud)

  • 我登录时只是为了回答有关transformPivot用法的答案,以减轻不均匀的填充问题.谢谢! (3认同)
  • 比例会影响兄弟视图的对齐以及不平衡的边距和间距。 (2认同)

Pir*_*hah 61

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

  <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" />
Run Code Online (Sandbox Code Playgroud)

  • 什么是android:stepSize ="0.1"? (3认同)

ZeW*_*e15 40

您可以在XML代码中设置它RatingBar,使用scaleX和相应地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" />
Run Code Online (Sandbox Code Playgroud)

  • 这个问题是,即使图标较小,评级栏仍然占用与以前相同的宽度和高度.这会导致对齐问题,因为在第一个和最后一个图标旁边有一堆左右填充.例如,如果你想要你的图标像这样的"XXXXX",缩放后它将看起来像这样的"----- XXXXX -----",其中" - "是空的空间而"X"是一个图标.所以你的评级栏似乎因为空的空间被推到了正确的位置 (12认同)
  • 在没有在左边创建填充的情况下获得比例添加android:transformPivotX ="0dp" (4认同)

Nav*_*mad 31

下面的片段为我调整了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"/>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 如何更改此评级栏的填充条颜色半填充,完全填充和空白颜色? (2认同)

Dev*_*ine 9

工作实例

             <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" />
Run Code Online (Sandbox Code Playgroud)

并将其添加到样式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>
Run Code Online (Sandbox Code Playgroud)

这样您就不需要自定义ratingBar.


Sye*_*air 8

这对我有用。
检查这张图片

            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" />
Run Code Online (Sandbox Code Playgroud)


小智 8

这将完美地工作

style="?android:attr/ratingBarStyleSmall"
Run Code Online (Sandbox Code Playgroud)


小智 6

<RatingBar
  style="?android:attr/ratingBarStyleIndicator"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
/>
Run Code Online (Sandbox Code Playgroud)

  • 你能详细说明你是如何达成解决方案的吗? (5认同)

小智 6

RatingBar标签中添加这两行

style="@style/Widget.AppCompat.RatingBar.Small"
android:isIndicator="false"
Run Code Online (Sandbox Code Playgroud)


小智 5

RatingBar给定属性中:

style="?android:attr/ratingBarStyleIndicator" 
Run Code Online (Sandbox Code Playgroud)


AMA*_*NGH 5

在这里查看我的答案.实现它的最佳方式.

 <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>
Run Code Online (Sandbox Code Playgroud)

并使用像

<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" />
Run Code Online (Sandbox Code Playgroud)


小智 5

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

<RatingBar
    android:id="@+id/rating_star_value"
    style="@style/Widget.AppCompat.RatingBar.Small"
    ... />
Run Code Online (Sandbox Code Playgroud)