我正在尝试创建一个自定义评级栏,其中星号的数量是动态的,我需要使用的drawable也取决于我从服务器获得的类型。 我这样做 -
<RatingBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:id="@+id/rating_bar_star"
android:layout_gravity="center"
style="@style/RatingBarStar"
android:stepSize="0.1"/>
然后我加入了风格 -
<style name="RatingBarStar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/rating_bar</item>
<item name="android:minHeight">20dip</item>
<item name="android:maxHeight">20dip</item>
</style>
这是我在drawable中添加的rating_bar.xml -
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background"
android:drawable="@drawable/rating_bar_empty" />
<item android:id="@android:id/secondaryProgress"
android:drawable="@drawable/rating_bar_empty" />
<item android:id="@android:id/progress"
android:drawable="@drawable/rating_bar_filled" />
</layer-list>
rating_bar_empty.xml
<item android:state_pressed="true"
android:state_window_focused="true"
android:drawable="@drawable/rating_off" />
<item android:state_focused="true"
android:state_window_focused="true"
android:drawable="@drawable/rating_off" />
<item android:state_selected="true"
android:state_window_focused="true"
android:drawable="@drawable/rating_off" />
<item android:drawable="@drawable/rating_off" />
和rating_bar_filled.xml -
<item android:state_pressed="true"
android:state_window_focused="true"
android:drawable="@drawable/rating_on" />
<item android:state_focused="true"
android:state_window_focused="true"
android:drawable="@drawable/rating_on" />
<item android:state_selected="true"
android:state_window_focused="true"
android:drawable="@drawable/rating_on" />
<item android:drawable="@drawable/rating_on" />
然后在我的java文件中添加它 -
rating_bar_star.setNumStars(getStars());
显然我从服务器上获得了明星。现在我的问题是,当我点击/选择一个星星时,它不会选择一个整星。 如果星数是6并且我将stepSize设置为0.8然后它工作正常但是同样的stepSize不适用于10颗星。我想要的只是我的星星,以显示所选星星的选定外观。
当我没有设置stepSize并选择/点击第一颗星时,这就是我得到的
这是当我点击第二个 -