Android RatingBar setRating不起作用

时间:2012-11-17 23:57:44

标签: android ratingbar

我正在尝试将int值显示为ratingBar。最大值为5.

这是我的XML文件:

<RatingBar
            android:id="@+id/ratBar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:isIndicator="false"
            android:numStars="5" />

但是如果我用setRating()设置评级,那么android会吸引很多明星。我无法弄清楚有多少因为我的屏幕太小了。

有人能告诉我什么是错的吗?

4 个答案:

答案 0 :(得分:3)

我无法理解你的问题究竟是什么,但无论如何在Android应用程序中使用RatingBar非常容易。您需要在适当的位置定义您的RatingBar;

<RatingBar
        android:id="@+id/ratingBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:isIndicator="true"
        android:max="5"
        android:numStars="3" />

在您的活动中获取对它的引用;

private RatingBar rb;
...
this.rb = (RatingBar) findViewById(R.id.ratingBar1);

并开始设置值以填充星星;

this.rb.setRating(2); , this.rb.setRating((float)2.5); etc.

如果您的屏幕太小而无法显示五颗星,则可以设置星数,就像我上面所做的那样。你有几个选择;

1)你可以将两个评级栏一个放在另一个3栏下,另一个放2星。当您的数量超过3时,您可以继续填充底部评级栏的2颗星。

2)如果可能,您可以设置浮点值而不是整数。所以你可以设置1个,1.5个,2.5个,2.5个,3个,3.5个等等,你可以在一个小代数之后为你的间隔1-5填充3颗星。

答案 1 :(得分:2)

您需要定义自己的自定义样式,以达到RatingBar所需的效果。 尝试创建styles并在RatingBar视图中应用该样式。

像这样:

<?xml version="1.0" encoding="utf-8"?>
  <resources>
    <style name="foodRatingBar" parent="@android:style/Widget.RatingBar">
    <item name="android:progressDrawable">@drawable/food_ratingbar_full</item>
    <item name="android:minHeight">48dip</item>
    <item name="android:maxHeight">48dip</item>
  </style> 
 </resources> 
 <RatingBar   android:id="@+id/my_rating_bar"
        ...
        style="@style/foodRatingBar" />

查看here了解详情。

答案 2 :(得分:2)

你也可以尝试这个

<RatingBar
    android:id="@+id/ratingBar"
    style="?android:attr/ratingBarStyleIndicator"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/artist"
    android:layout_below="@+id/artist"
    android:numStars="5"
    android:rating="2.0"
    android:stepSize="1.0" />

答案 3 :(得分:0)

当您在评级栏的样式中设置的drawable对于背景,次要进度和进度具有不同的png大小时,会发生这种情况。

将其更改为

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background"
        android:drawable="@android:color/transparent" />
    <item android:id="@android:id/secondaryProgress"
        android:drawable="@drawable/star_half" />
    <item android:id="@android:id/progress"
        android:drawable="@drawable/star_full" />