【问题标题】:Android RatingBar setRating doesn't workAndroid RatingBar setRating 不起作用
【发布时间】:2012-11-17 23:57:44
【问题描述】:

我正在尝试将 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 会吸引很多星星。我不知道有多少,因为我的屏幕太小了。

谁能告诉我怎么了?

【问题讨论】:

  • 你能展示你用来设置评级的 Java 代码吗?
  • 诅咒之:rat.setRating(temp.getInt("rat")); temp.getInt("rat") 给我一个 1 到 5 之间的整数。
  • setRating() 不会改变星星的数量,它只是填充它们。我们可以看到完整的 java 代码来设置你的评级栏吗?

标签: android ratingbar


【解决方案1】:

我无法理解您的问题到底是什么,但无论如何在 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、2.5、3、3.5 等,并在一点代数之后为您的区间 1-5 填充 3 颗星。

【讨论】:

    【解决方案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了解更多详情。

    【讨论】:

      【解决方案3】:

      你也可以试试这个

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

      【讨论】:

        【解决方案4】:

        当您在评分栏样式中设置的可绘制对象的背景、次要进度和进度的 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" />
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多