我堆叠了非常烦人的问题,我想在我的RatingBar小部件中添加自定义drawable,我跟着some examples如何操作:
1)我创建了自己的风格,设置minHeight=16dip
和maxHeight=16dip
2)增加了16px * 16px的星形抽屉。
它改变了图标,但问题是我的星星看起来很模糊,即低分辨率。我知道为什么,bcs drawables是16 * 16px,但我不能让他们的质量更好(例如76px * 76px),bcs Android不会扩展评级栏图标。当你减少minHeight和maxHeight时,android将始终裁剪图标。即使我不使用min和max heght结果是相同的 - 我的大抽奖(我试图在hdpi,xhdpi文件夹中添加drawable)只是裁剪。
有没有办法在自定义RatingBar中提高drawable的分辨率? THX。
P.S。这是我的代码以防万一:
风格:
<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"/>
答案 0 :(得分:3)
试试这个例子
在drawable中创建custom_ratingbar_selector.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/unslected_star_icon" />
<item android:id="@android:id/secondaryProgress"
android:drawable="@drawable/unslected_star_icon" />
<item android:id="@android:id/progress"
android:drawable="@drawable/slected_star_icon" />
</layer-list>
在布局活动中使用它
<RatingBar
android:id="@+id/ratingBar2"
android:layout_width="wrap_content"
android:layout_height="21dp"
android:progressDrawable="@drawable/custom_ratingbar_selector"
android:numStars="5"
android:stepSize="1"
android:rating="3.0" />
我的照片尺寸是22 * 21所以我的评级栏的高度是21dp ....检查你的照片尺寸并设置为高度,如果你不想显示不准确
答案 1 :(得分:2)
我也尝试在android中使用自定义评级样式,我的经验很糟糕,所以我了解到最好使用本地sytles,然后将类文件中的颜色切割为如下所示
<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"
/>
并且在您的课程中,如果您想更改yoru评级星标的颜色,请添加此代码
LayerDrawable layerDrawable =(LayerDrawable)ratingBar.getProgressDrawable();
// Unfilled star color
DrawableCompat.setTint(DrawableCompat.wrap(layerDrawable.getDrawable(2)),
Color.WHITE);