我遇到了非常烦人的问题,我想将自定义可绘制元素添加到我的RatingBar小部件中,我关注了some examples怎么做:
1) 我创建了自己的样式,设置了 minHeight=16dip
和 maxHeight=16dip
2) 添加了 16px*16px 星形绘图。
它改变了图标,但问题是我的星星看起来很模糊,即分辨率低。我知道为什么,bcs 绘图是 16*16px,但我无法提高它们的质量(例如 76px*76px),bcs Android 不会缩放评级栏图标。当你减少 minHeight 和 maxHeight 时,android 总是会裁剪图标。即使我不使用最小和最大高度结果是相同的 - 我的大可绘制对象(我尝试在 hdpi、xhdpi 文件夹中添加可绘制对象)只是裁剪。
有没有办法提高自定义评级栏中可绘制对象的分辨率?谢谢。
附注这是我的代码,以防万一:
风格:
<style name="CustomRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/rating_bar_drawable</item>
<item name="android:minHeight">16dip</item>
<item name="android:maxHeight">16dip</item>
</style>
rating_bar_drawable.xml:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background" android:drawable="@drawable/car_washes_star_empty" />
<item android:id="@android:id/secondaryProgress" android:drawable="@drawable/car_washes_star_fill" />
<item android:id="@android:id/progress" android:drawable="@drawable/car_washes_star_fill" />
main.xml:
<RatingBar
android:id="@+id/car_washes_list_item_rating_bar"
style="@style/CustomRatingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/car_washes_item_rating_bar_margin_right"
android:layout_marginRight="@dimen/car_washes_item_rating_bar_margin_right"
android:numStars="5"/>
最佳答案
我也曾尝试在android中使用自定义评级样式,但我的体验很糟糕,所以我了解到最好使用 native 样式,然后在类文件中自定义颜色,如下所示
<RatingBar
android:id="@+id/ratingBar"
android:isIndicator="false"
android:numStars="5"
android:stepSize="1.0"
style="?android:attr/ratingBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="45dp"
android:layout_centerHorizontal="true"
android:layout_below="@+id/linearLayoutLoginFailed"
android:progressTint="@android:color/white"
/>
并且在您的类(class)中,如果您想更改 yoru 评级星星的颜色,请添加此代码
LayerDrawable layerDrawable = (LayerDrawable) ratingBar.getProgressDrawable();
// Unfilled star color
DrawableCompat.setTint(DrawableCompat.wrap(layerDrawable.getDrawable(2)),
Color.WHITE);
关于android - 自定义评级栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37879347/