自定义图像评级栏 - 次要进度和进度drawables重叠,帮助我! (包括代码和假设)

时间:2013-11-29 15:33:24

标签: android ratingbar

编辑:我删除了该行

<item
    android:id="@+android:id/secondaryProgress"
    android:drawable="@drawable/ratingbar_full_empty_sc"/>

它取消了不良效果。所以这确实是一个叠加问题。现在感觉非常笨拙给予半评。有人有真正的解决方案吗?请...

原帖

我尝试实施评级栏,但我对半满的问题有些疑问。我修改现有代码并按照post

进行操作

这是一个奇怪的结果:

Rating Bar - note the darker stroke around the half-filled star

有没有听说过这个问题?

我在下面发布我的代码

 <RatingBar
            android:id="@+id/rating_view"
            style="@style/sc_rating_bar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/padding_medium" />

评级栏的样式:

    <style name="sc_rating_bar" parent="@android:style/Widget.RatingBar">
    <item name="android:progressDrawable">@drawable/ratingbar_full_sc</item>
    </style>

progressDrawable:

<?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_full_empty_sc"/>
<item
    android:id="@+android:id/secondaryProgress"
    android:drawable="@drawable/ratingbar_full_empty_sc"/>
<item
    android:id="@+android:id/progress"
    android:drawable="@drawable/ratingbar_full_filled_sc"/>

</layer-list>

ratingbar_full_empty_sc:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/star_empty2" android:state_pressed="true" android:state_window_focused="true"/>
<item android:drawable="@drawable/star_empty2" android:state_focused="true" android:state_window_focused="true"/>
<item android:drawable="@drawable/star_empty2" android:state_selected="true" android:state_window_focused="true"/>
<item android:drawable="@drawable/star_empty2"/>

</selector>

和他的兄弟,ratingbar_full_filled_sc与star_full2图片完全相同。

我做错了什么?您可以在我的屏幕截图,完整填充星和空星图上看到这两张图片。

1 个答案:

答案 0 :(得分:0)

啊,哈哈!我根据之前的修改找到了一个小解决方案:在progressDrawable我将secondaryProgress修改为

    <item
    android:id="@+android:id/secondaryProgress"
    android:drawable="@drawable/ratingbar_full_null_sc"/>

正如名字所示,我把一个空图像作为可绘制的内部:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/star_empty2_null" android:state_pressed="true" android:state_window_focused="true"/>
<item android:drawable="@drawable/star_empty2_null" android:state_focused="true" android:state_window_focused="true"/>
<item android:drawable="@drawable/star_empty2_null" android:state_selected="true" android:state_window_focused="true"/>
<item android:drawable="@drawable/star_empty2_null"/>

</selector>

@drawable/star_empty2_null是指图像,与填充星和空星相同的大小,但没有任何内容(我拿了星号文件,在Gimp中清除它并以相同的像素大小导出它)。

完美流畅的动画,没有更多的视觉叠加!