【问题标题】:How can I decrease the size of Ratingbar?如何减小 Ratingbar 的大小?
【发布时间】:2011-09-03 11:01:42
【问题描述】:

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

编辑

感谢加布里埃尔·内古特, 我用以下风格做到了:

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

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

【问题讨论】:

  • 你的意思是Seekbar吗?设置高度和宽度对我来说很好。你可以在这里发布你的代码 sn-p 吗?
  • 我会建议删除“编辑”,而不是使其成为公认的答案。那或@GabrielNegut 可以编辑他的答案以包含这种解决方案。在问题中包含解决方案会影响问答体验。
  • style="?android:attr/ratingBarStyleSmall" 为我工作。

标签: android rating-system


【解决方案1】:

我发布的原始链接现在已损坏(有充分理由说明仅发布链接不是最佳方式)。您必须使用ratingBarStyleSmall 或继承自Widget.Material.RatingBar.Small 的自定义样式设置RatingBar 的样式(假设您在应用中使用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"
    ... />

【讨论】:

  • 或者使用这种风格 style="?android:attr/ratingBarStyleSmall" 会减小尺寸。
  • 但是右边多了一个无用的内边距!怎么去掉?!
  • 注意:设置 width="wrap_content" 去掉多余的星星
【解决方案2】:

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

 <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" />

【讨论】:

  • 我登录只是为了支持您对使用 transformPivot 来缓解不均匀填充问题的回答。谢谢!
  • 终于不用填充了!!
  • 很棒的答案!谢谢!
  • 缩放会影响同级视图的对齐以及不平衡的边距和间距。
【解决方案3】:

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

  <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" />

【讨论】:

  • 什么是 android:stepSize="0.1" ?
  • 另请查看本页末尾的我的回答。
  • @HammadTariqSahi 很好,继续努力,但是我的代码有什么问题吗?有什么事请告诉我
  • @PirFahimShah 谢谢,兄弟,我还没有检查过这段代码。如果您遵循这种方法,您可以改进并设置评分栏的样式。
【解决方案4】:

您可以在RatingBar 的XML 代码中设置它,使用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" />

【讨论】:

  • 这样做的问题是,即使图标更小,评分栏仍然占据与以前相同的宽度和高度。这会导致对齐问题,因为在第一个和最后一个图标旁边有一堆左右填充。例如,如果你想要你的图标像这样“XXXXX”,缩放后它会看起来像这样“-----XXXXX-----”,其中“-”是空白区域,“X”是一个图标.因此,您的评分栏看起来会因为空白而被推到右侧
  • 我猜你正在使用相对布局。这很痛苦,但您可以通过使用 android:layout_marginRight 和喜欢的方式调整它以使其进入正确的位置,从而以您想要的方式获得它。
  • 在不创建左侧填充的情况下获得缩放添加 android:transformPivotX="0dp"
【解决方案5】:

下面的 sn-p 为我调整 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"/>

【讨论】:

  • 如何更改此评级栏的半填充、全填充和空颜色的评级栏颜色?
  • rating 参数是用来填充评分栏的吧?我使用了 android:rating="3.5" 所以填充了 3.5 颗星。您最多可以设置 5,因为在 xml 中设置了 max = 5。如果要更改评分栏的颜色,则必须在 style.xml 中创建样式,请参阅此链接:stackoverflow.com/a/35914622/2915785
  • 如何以编程方式 android:transformPivotX="0dp" android:transformPivotY="0dp" ?
  • @NaveedAhmad 但是右边有一个无用的填充!怎么去掉?!
  • @Mr.Hyde 检查raringbar的样式stackoverflow.com/a/24407907/2915785
【解决方案6】:

Working Example

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

【讨论】:

    【解决方案7】:

    检查我的答案here。实现它的最佳方法。

     <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" />
    

    【讨论】:

      【解决方案8】:
      <RatingBar
        style="?android:attr/ratingBarStyleIndicator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
      />
      

      【讨论】:

      • 您能否详细说明您是如何找到解决方案的?
      • 这不允许RatingBar被改变。
      【解决方案9】:

      RatingBar标签中,添加这两行

      style="@style/Widget.AppCompat.RatingBar.Small"
      android:isIndicator="false"
      

      【讨论】:

        【解决方案10】:

        如果您在带有 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>
        

        【讨论】:

          【解决方案11】:

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

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

          【讨论】:

            【解决方案12】:

            这对我有用。

                        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" />
            

            【讨论】:

              【解决方案13】:
               <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" 就可以了!

              【讨论】:

              • 使用此评分栏颜色后没有变化。怎么改?
              【解决方案14】:

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

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

              【讨论】:

              • 使用这种风格 style="?android:attr/ratingBarStyleSmall" 会缩小尺寸
              【解决方案15】:

              RatingBar 中给出属性:

              style="?android:attr/ratingBarStyleIndicator" 
              

              【讨论】:

                【解决方案16】:

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

                私有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); 返回线性布局评级; }

                【讨论】:

                  猜你喜欢
                  • 2021-10-26
                  • 2016-01-17
                  • 2011-09-09
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-11-30
                  相关资源
                  最近更新 更多