Android:自定义 RatingBar - 图片不适合
Posted
技术标签:
【中文标题】Android:自定义 RatingBar - 图片不适合【英文标题】:Android: Custom RatingBar - Images do not fit 【发布时间】:2015-09-24 14:45:58 【问题描述】:在 android 中设置自定义评分栏时我遇到了一些问题。我已按照本教程进行操作:
How to create Custom Ratings bar in Android
但是,我在更改/选择超过 4 颗星时遇到了问题。选择的星图有点错位。这是一张图片,向您展示它的外观。
这是我用于创建自定义评分栏的 XML。
定义评分栏视图的主xml:
<LinearLayout
android:layout_
android:layout_
android:orientation="horizontal"
android:padding="10dp"
android:gravity="center" >
<RatingBar
android:id="@+id/ratingBar"
android:layout_
android:layout_
android:numStars="50"
android:stepSize="1.0"
style="@style/AppCustomRatingBar"/>
RatingBar 的自定义样式
<style name="AppCustomRatingBar"
parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/rating_stars_custom</item>
<item name="android:minHeight">19dp</item>
<item name="android:maxHeight">19dp</item>
</style>
rating_stars_custom.xml
<item
android:id="@android:id/background"
android:drawable="@drawable/rating_stars_yellow_empty" />
<item android:id="@android:id/secondaryProgress"
android:drawable="@drawable/rating_stars_yellow_empty" />
<item
android:id="@android:id/progress"
android:drawable="@drawable/rating_stars_yellow_full" />
rating_stars_yellow_empty.xml
<?xml version="1.0" encoding="utf-8"?>
<item
android:id="@android:id/background"
android:drawable="@drawable/rating_stars_yellow_empty" />
<item android:id="@android:id/secondaryProgress"
android:drawable="@drawable/rating_stars_yellow_empty" />
<item
android:id="@android:id/progress"
android:drawable="@drawable/rating_stars_yellow_full" />
rating_stars_yellow_full.xml
<item android:state_pressed="true"
android:state_window_focused="true"
android:drawable="@drawable/home_icon_star_fill_selected" />
<item android:state_focused="true"
android:state_window_focused="true"
android:drawable="@drawable/home_icon_star_fill_selected" />
<item android:state_selected="true"
android:state_window_focused="true"
android:drawable="@drawable/home_icon_star_fill_selected" />
<item android:drawable="@drawable/home_icon_star_fill_selected" />
我做错了什么,放错了星星?星星(黄色和白色)的图像尺寸相同。
【问题讨论】:
【参考方案1】:我设法修复它。如果您查看我在帖子中提供的图片,上面的黄色星星与 1pix 相比,与空星星相比就像关闭了。所以我看了看我使用的照片和它们的尺寸。之后,与空星的图像相比,黄色星似乎短了 1 像素(宽度)。所以这是我的问题,我得到了新的星星照片,并确保它们的大小相同。现在我有 2 张 30x30 的图片,一切正常!这解决了我的问题!因此,对于面临相同问题的人,我的建议是仔细查看他们正在使用的图片的大小(空/满),并确保它们的大小相同。这样可以节省时间和不必要的编码。 GL&HF :)
【讨论】:
【参考方案2】:好吧,我在评分栏上遇到了同样的问题。在做了一些研究之后,我找到了解决上述问题的方法。
首先,您需要 2 颗星,一颗空星和一颗彩色星。和大小应该是一样的。 (就我而言,两者都是 25x25)然后将此代码放入样式 xml 中
<style name="redbar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/ratingbar_red</item>
<item name="android:minHeight">25dip</item>
<item name="android:maxHeight">25dip</item>
</style>
在可绘制文件夹中创建另一个名为 ratingbar_red.xml 的 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/star_empty" />
<item android:id="@+android:id/secondaryProgress"
android:drawable="@drawable/star_empty" />
<item android:id="@+android:id/progress"
android:drawable="@drawable/star" />
</layer-list>
最后像这样创建你的 RatingBar。
<RatingBar
android:id="@+id/RatingBar05"
style="@style/redbar"
android:layout_
android:layout_
android:isIndicator="false"
android:numStars="5"/>
【讨论】:
【参考方案3】:这个错误 ||问题实际上与图像的大小有关,两者必须具有相同的大小,我修复此错误的方法是我没有删除填充图像的描边或边框,两个图像必须具有相同的宽度和身高
【讨论】:
以上是关于Android:自定义 RatingBar - 图片不适合的主要内容,如果未能解决你的问题,请参考以下文章