如何减小Ratingbar的大小?

时间:2011-05-27 14:21:28

标签: android rating-system

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

修改

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

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

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

15 个答案:

答案 0 :(得分:125)

我发布的原始链接现在已经破了(有一个很好的理由,为什么只发布链接不是最好的方法)。您必须使用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"
    ... />

答案 1 :(得分:60)

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

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

答案 2 :(得分:60)

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

http://example.com/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=4.2.1
http://example.com/wp-content/plugins/recent-tweets-widget/tp_twitter_plugin.css?ver=1.0
http://example.com/wp-content/plugins/revslider/rs-plugin/css/settings.css?rev=4.6.0&amp;ver=4.2.2
http://example.com/wp-content/plugins/js_composer/assets/css/vc-ie8.css
http://example.com/wp-content/themes/themeforest-9412083-specular-responsive-multipurpose-business-theme/specular/style.css?ver=4.2.2

答案 3 :(得分:38)

您可以在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" />

答案 4 :(得分:8)

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。

答案 5 :(得分:6)

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

答案 6 :(得分:5)

检查我的回答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" />

答案 7 :(得分: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>

答案 8 :(得分:2)

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

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

答案 9 :(得分:2)

RatingBar给出属性:

style="?android:attr/ratingBarStyleIndicator" 

答案 10 :(得分:2)

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

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

答案 11 :(得分:1)

RatingBar标签中,添加这两行

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

答案 12 :(得分:1)

这对我有用。
Check this image

            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 :(得分:0)

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


    private LinearLayout generateRatingView(float value){
        LinearLayout linearLayoutRating=new LinearLayout(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"));//for enabling half star
        ratingBar.setNumStars(5);
        ratingBar.setRating(value);
        linearLayoutRating.addView(ratingBar);
        return linearLayoutRating;
    }

答案 14 :(得分: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"就可以了!