带有动态numstar和自定义图标的Android自定义评级栏在点击

时间:2017-07-20 07:36:23

标签: java android rating ratingbar

我正在尝试创建一个自定义评级栏,其中星号的数量是动态的,我需要使用的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并选择/点击第一颗星时,这就是我得到的

this is what I get when I don't set stepSize and select/click on first star

这是当我点击第二个 -

enter image description here

0 个答案:

没有答案