设置评级栏的风格打破了规模?

时间:2015-03-23 19:07:40

标签: android xml ratingbar

当我使用这样的操作栏时,我已经尝试了几天来设置我的评级栏并使用谷歌搜索如何解决它:

<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颗星,所以我能在这做什么?

1 个答案:

答案 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;。