当我使用这样的操作栏时,我已经尝试了几天来设置我的评级栏并使用谷歌搜索如何解决它:
<RatingBar
android:layout_width="wrap_content"
android:layout_height="25dp"
android:numStars="5"
android:rating="3"
android:isIndicator="true"
android:id="@+id/rating"
style="?android:attr/ratingBarStyleSmall"
/>
我得到了这个结果:http://i.imgur.com/MwlxGBz.png(我还不能发布图片), 所以当我写自己的风格时,就像这样:
<RatingBar
android:layout_width="wrap_content"
android:layout_height="25dp"
android:numStars="5"
android:rating="3"
android:isIndicator="true"
android:id="@+id/rating"
style="@style/ratingBar"/>
其中ratingBar在styles.xml中定义为:
<style name="ratingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/ratingstars</item>
</style>
和ratingstars在drawable / ratingstars.xml中定义为:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@android:id/background"
android:drawable="@drawable/staroff"/>
<item
android:id="@android:id/secondaryProgress"
android:drawable="@drawable/staroff"/>
<item
android:id="@android:id/progress"
android:drawable="@drawable/staron"/>
</layer-list>
staron和staroff是具有星星所需纹理的png,我得到的结果是:http://i.imgur.com/V31dWpK.png 如何让它与第一个例子中的ratingbar相同,但是使用我提供的纹理?
我尝试过使用scaleX和scaleY,它会切割星星并弄乱它们的位置,设置宽度不是一个选项,因为有超过5颗星,所以我能在这做什么?
答案 0 :(得分:3)
如果您想使用自定义图像,则需要更改图像大小。
如果你想改变星星的颜色,可以用代码来做。
RatingBar ratingBar = (RatingBar)view.findViewById(R.id.rating);
LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable();
stars.getDrawable(0).setColorFilter(Color.GRAY, PorterDuff.Mode.SRC_ATOP);
stars.getDrawable(1).setColorFilter(Color.GRAY, PorterDuff.Mode.SRC_ATOP);
stars.getDrawable(2).setColorFilter(Color.BLACK, PorterDuff.Mode.SRC_ATOP);
在此示例中,显示评级的星标为黑色,其他星标为灰色。
不要忘记将RatingBar的样式设置为小。 例如:
style="@android:style/Widget.DeviceDefault.RatingBar.Small"
在这种情况下,你不会需要&#34; drawable / ratingstars.xml&#34; &style;&#34; styles.xml&#34;。