评级栏明星不会改变

时间:2013-12-12 10:39:47

标签: android android-layout ratingbar

在我的代码中,我想设置我的自定义星星,但它无法正常工作

 <RatingBar
                android:id="@+id/ratingBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:numStars="5"
                android:stepSize="1"
                android:rating="1"
                android:progressDrawable="@drawable/rating_bar_color"/>

rating_bar_color.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background" android:drawable="@drawable/starw30" />
    <item android:id="@android:id/progress" android:drawable="@drawable/star" />
</layer-list>

我使用此代码以及我在结果中得到的内容

enter image description here

线条来自哪里。星星的大小与默认星号相同。

4 个答案:

答案 0 :(得分:4)

这些行是因为您尝试使用android:layout_height="wrap_content"包装评分栏图像。因此,作为解决方案,您必须将评级栏的高度提供给图像的大小。

如果评级栏图片的尺寸为20,请尝试添加

android:layout_height="20dip"

这对你有用!

答案 1 :(得分:1)

只需尝试android:layout_height="20sp"或您正在使用的任何星号。

还有一件事,您需要为自定义评级栏定义样式:

例如:my_ratingbar.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="foodRatingBar" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/rating_bar_color</item>
        <item name="android:minHeight">36dip</item> 
        <item name="android:maxHeight">36dip</item>
    </style>
</resources>
<!--Where 36dp is the size of image and include progress drawable here.

使用以下方法将此样式应用于RatingBar:

<RatingBar   
  ...
   style="@style/my_ratingbar" />

答案 2 :(得分:0)

此问题是由于图像缩放不正确造成的。对此的解决方案是遵循像这样的比例......

ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi

0.75 | 1 | 1.33 | 1.5 | 2 | 3 | 4

答案 3 :(得分:0)

当明星资产的大小与评级栏的大小不同并且明星资产在星本身和底部边界之间没有透明空间时,就会发生这些泄漏的恒星。 出于某种原因,Android会尝试通过复制资产的最低部分来放大图像,这样您就可以像我在其中一个项目中那样在资源底部添加一些透明空间。

tl; dr:在星级资产

下添加一些透明空间
相关问题