gpt4 book ai didi

android - 对评分栏进行样式设置会打破规模吗?

转载 作者:搜寻专家 更新时间:2023-11-01 08:45:07 24 4
gpt4 key购买 nike

几天来我一直在尝试设置我的评分栏的样式,并在谷歌上搜索如何修复它,当我像这样使用操作栏时:

<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我怎样才能使它与第一个示例中的评分栏大小相同,同时使用我提供的纹理?

我试过使用 scaleX 和 scaleY,它们会切割星星并弄乱它们的位置,设置宽度不是一个选项,因为星星会超过 5 个,所以我能在这里做什么?

最佳答案

如果您想使用自定义图片,您需要更改图片的大小。

如果您只想更改星星的颜色,可以使用代码来完成。

    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 的样式设置为 small。示例:

style="@android:style/Widget.DeviceDefault.RatingBar.Small"

在这种情况下,您不需要“drawable/ratingstars.xml”和“styles.xml”中的样式。

关于android - 对评分栏进行样式设置会打破规模吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29218402/

24 4 0