我使用以下图标作为我的自定义评级栏:
并使用以下代码:
我的自定义绘图:
<?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
黑线消失。
为什么我需要将最小和最大尺寸设置为小于图标的实际尺寸?!!
在评级栏中使用自定义星级图像时,我遇到了同样的拖线问题。
一个简单的解决方案是keep a padding of 1px to the star image
例如,考虑下面的两张图片;
- 图片1
- 图片2
Image1 是32x32px的原始图像,它给出了拖动效果,而,
Image2 是相同的图像,但内边距为 1 像素,这使得图像大小为36x36 像素并消除了拖动效果。
为什么我需要将最小和最大尺寸设置为小于图标的实际尺寸?
这是因为您已将 (17x17px) 图像放入该drawable-hdpi
文件夹中,对于 hdpi,17px = 11.33dp。
您可以做的是将图像放入drawable
文件夹中,然后设置即可完成工作。然而,将图像放在可绘制文件夹中并不是正确的方法。minheight
and
maxheight
to
17dp
最佳实践是将不同像素大小的图像放在每个drawable-mdpi、drawable-hdpi、drawable-xhdpi和drawable-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 转换方法
归档时间: |
|
查看次数: |
2175 次 |
最近记录: |