自定义评级栏drawables不正确重叠

时间:2015-08-11 09:11:49

标签: java android ratingbar

我正在创建自定义评级栏。问题是drawables没有正确覆盖,因为有两个不同的图像具有相同的高度和宽度。当进度将被更新时应该是这样的,默认图像应该被替换为image2。有什么想法吗?

<RatingBar
        android:layout_weight="1"
        android:numStars="5"
        android:stepSize="1"
        android:progressDrawable="@drawable/customselector"
        android:layout_width="wrap_content"
        android:layout_height="0dp"/>

这是我的自定义选择器

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

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

    <item android:id="@android:id/progress"
        android:drawable="@drawable/image2" />

</layer-list>

enter image description here

2 个答案:

答案 0 :(得分:0)

我将选择器设置为RatingBar的方式略有不同,但我不知道它是否会有所帮助:

<RatingBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/ratingBar"
    android:rating="3"
    android:numStars="5"
    android:stepSize="1"
    android:isIndicator="false"
    style="@style/mileageRatingBar"/>

在您的values / styles.xml文件中输入:

<style name="mileageRatingBar" parent="@android:style/Widget.RatingBar">
    <item name="android:progressDrawable">@drawable/rating_stars</item>
    <item name="android:minHeight">32dip</item>
    <item name="android:maxHeight">32dip</item>
</style>

您当然可以更改尺寸。正如您在这里看到的那样是对自定义drawable的引用。

答案 1 :(得分:0)

删除

 android:progressDrawable="@drawable/customselector" 

并在 values / styles.xml

中添加样式

就像这样

<RatingBar
        android:layout_weight="1"
        android:numStars="5"
        android:stepSize="1"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
       style="@style/customRatingBar"/>

来自styles.xml的样式

<style name="customRatingBar" parent="@android:style/Widget.RatingBar">
    <item name="android:progressDrawable">@drawable/customselector</item>
    <item name="android:minHeight">32dip</item>
    <item name="android:maxHeight">32dip</item>
</style>

customselector.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/image1" />

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

    <item android:id="@android:id/progress"
        android:drawable="@drawable/image2" />

</layer-list>

确保正确编写了商品ID,然后您有两个选项可以将可绘制指定为图像,或者使用您的自定义设置将您的选择器放入可绘制文件夹selector.xml

而不是 image1 ratingbar_empty.xml

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true"
        android:state_window_focused="true"
        android:drawable="@drawable/image1" />

    <item android:state_focused="true"
        android:state_window_focused="true"
        android:drawable="@drawable/image1" />

    <item android:state_selected="true"
        android:state_window_focused="true"
        android:drawable="@drawable/image1" />

    <item android:drawable="@drawable/image1" />

</selector>

进展相同但将选择器更改为image2