android - 自定义评级栏

标签 android ratingbar

我遇到了非常烦人的问题,我想将自定义可绘制元素添加到我的RatingBar小部件中,我关注了some examples怎么做:

1) 我创建了自己的样式,设置了 minHeight=16dipmaxHeight=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/

相关文章:

android - 如何以编程方式创建联系人

android - OpenCV Android - 将 MatOfPoint 转换为 Mat

android - 评分栏未占用所有可用空间

android - 如何为列表项具有 ratingBar 的 ListActivity 启用 onListItemClick

android - 自定义 Android 评分栏拉伸(stretch)图像

Android星级评分如何适应宽度

java - Java 中的 TotallyLazy 函数代码

android - 一个移动应用程序可以支持多个不同的 MDM 吗?

Android openGL GLES20.glUniformMatrix4fv 到 java

java - AlertDialog 中的评级栏 : How to change the number of stars programmatically?