具有自定义样式的评级栏显示不良图像

Hus*_*Rad 2 android ratingbar

我使用以下图标作为我的自定义评级栏:

在此输入图像描述

在此输入图像描述

并使用以下代码:

我的自定义绘图:

    <?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/ic_list_item_wstar" />
    <item android:id="@+android:id/secondaryProgress"
          android:drawable="@drawable/ic_list_item_wstar" />
    <item android:id="@+android:id/progress"
          android:drawable="@drawable/ic_list_item_ystar" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)

我的定制风格:

   <style name="YellowRatingBar" parent="@android:style/Widget.RatingBar">
    <item name="android:progressDrawable">@drawable/ic_ratingbar_yellow</item>
    <item name="android:minHeight">22dip</item>
    <item name="android:maxHeight">22dip</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我的评级条形码:

    <RatingBar
    android:id="@+id/ratingBar1"
    style="@style/YellowRatingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
        android:isIndicator="false"
    android:rating="3.7" />
Run Code Online (Sandbox Code Playgroud)

但它没有一个好的结果,我的结果如下所示:

在此输入图像描述

编辑

图标的大小为17X17像素。我将最小和最大尺寸设置为17dp,黑线变小,最后当我将其设置为时,11dp黑线消失。

为什么我需要将最小和最大尺寸设置为小于图标的实际尺寸?!!

Lak*_*ksh 5

在评级栏中使用自定义星级图像时,我遇到了同样的拖线问题。

一个简单的解决方案是keep a padding of 1px to the star image

例如,考虑下面的两张图片;

图片 1 32x32 像素- 图片1

图片 2 36x36 像素- 图片2

Image1 是32x32px的原始图像,它给出了拖动效果,而,

Image2 是相同的图像,但内边距为 1 像素,这使得图像大小为36x36 像素并消除了拖动效果。

为什么我需要将最小和最大尺寸设置为小于图标的实际尺寸?

这是因为您已将 (17x17px) 图像放入该drawable-hdpi文件夹中,对于 hdpi,17px = 11.33dp。

您可以做的是将图像放入drawable文件夹中,然后设置即可完成工作。然而,将图像放在可绘制文件夹中并不是正确的方法。minheightandmaxheightto17dp

最佳实践是将不同像素大小的图像放在每个drawable-mdpidrawable-hdpidrawable-xhdpidrawable-xxhdpi文件夹中。

因此,17x17px图像应放置在drawable-mdpi文件夹中。因此(在您的情况下),要放置在文件夹中的相应图像尺寸是,

drawable-mdpi - 17x17px
drawable-hdpi - 25x25px
drawable-xhdpi - 34x34px
drawable-xxhdpi - 51x51px
Run Code Online (Sandbox Code Playgroud)

<item name="android:minHeight">17dp</item>
<item name="android:maxHeight">17dp</item>
Run Code Online (Sandbox Code Playgroud)

要计算不同文件夹中的图像大小,您可以使用dp 到 px 转换方法