我正在创建自定义评级栏。问题是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>
答案 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