当我为Android RatingBar使用自定义星标时,总是显示半星值低于0.5的半星

Gra*_*son 13 android custom-controls ratingbar

了很多帖子(例如Android RatingBar更改星级颜色,更改评级栏中星级的颜色,其中评级栏是在android中动态创建的,我如何设置评级栏的星号?)为了改变RatingBar中星星的颜色.我跟踪帖子并且能够更改自定义RatingBar的星星,但是在这样做时我不再能够将值设置为小于一半的小数(例如0.2).它总是显示为一半(例如0.5).当我将值设置为高于一半(例如0.7)时,它会完美显示.

以下是我用于自定义RatingBar的示例图像(即ratingbar_empty.png,ratingbar_half.png,ratingbar_full.png)

空星 半星 全明星

以下是使用自定义星标的xml(ratingbar_custom.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/ratingbar_empty" />
    <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/ratingbar_half" />
    <item android:id="@android:id/progress" android:drawable="@drawable/ratingbar_full" />
</layer-list>'
Run Code Online (Sandbox Code Playgroud)

以下是我在布局中如何使用自定义RatingBar.

<RatingBar 
    android:id="@+id/rb_rating"
    android:numStars="7"
    android:rating="0"      
    android:stepSize="0.01"                     
    android:isIndicator="true"                                                            
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:progressDrawable="@drawable/ratingbar_custom" />
Run Code Online (Sandbox Code Playgroud)

当我把它们放在一起并将RatingBar的值设置为0.2时,它会将RatingBar视觉设置为0.5,如下所示.有没有人知道为什么会发生这种情况或者我做错了什么?任何帮助将不胜感激.谢谢

将自定义RatingBar设置为0.2,但在视觉上显示0.5

rus*_*nys 26

你不需要star_half.

尝试这样做:

<?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/star_none" />
    <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/star_none" />
    <item android:id="@android:id/progress" android:drawable="@drawable/star_fill" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)