在ratingbar中切断图像

时间:2012-08-08 12:32:27

标签: android

我制作了自己的评级栏。从24pxx24px到64x64px有4种尺寸的鲜花图像(xdpi,hdpi等)。

<?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_rating_flowers_empty" />
    <item android:id="@+android:id/secondaryProgress"
          android:drawable="@drawable/ic_rating_flowers_empty" />
    <item android:id="@+android:id/progress"
          android:drawable="@drawable/ic_rating_flowers" />
</layer-list>

rating_flowers.xml in drawable floder

<style name="flowersRating" parent="@android:style/Widget.RatingBar">
    <item name="android:progressDrawable">@drawable/rating_flowers</item>
    <item name="android:minHeight">24dip</item>
    <item name="android:maxHeight">64dip</item>
</style>
style.xml中的

<TableRow
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dip" >

    <TextView
        android:text="@string/mood_headache" />

    <RatingBar
        android:id="@+id/moodHeadacheRating"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"    
        android:numStars="3"
        android:stepSize="1.0"
        android:rating="0" 
        style="@style/flowersRating" />

 </TableRow> 

和活动

我所看到的

What I see

来自drawable-ldpi的图片

enter image description here enter image description here

5 个答案:

答案 0 :(得分:3)

尝试删除

android:padding="5dip"
来自TableRow的

,因为它会在花卉绘制的正上方产生填充。

答案 1 :(得分:1)

在评级栏的XML中更改

android:layout_height="wrap_content"

android:layout_height="[some number]sp".

这将解决截止图像的问题。

DisplayMetrics可用于获取有关显示的一般信息,然后找出要使用的相应单位,但使用an android unit converter要简单得多。

答案 2 :(得分:1)

将样式用作?android:attr / ratingBarStyleSmall

<RatingBar
android:id="@+id/rating"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:progressDrawable="@drawable/ratingbar_selector"
android:rating="2.0"
android:stepSize="1.0" />

并且自定义评级栏选择器将是: ratingbar_selector.xml

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

IMP注意:如果自定义评级栏图标大小类似于48x48,50x50等,则将图标放入xxhdpi文件夹(因为我使用较小(36x36)评级图标,这就是创建相同的问题)。 然后我使用了尺寸为48x48的评级栏图标。

答案 3 :(得分:0)

我在这里遇到了完全相同的问题。对我来说,问题不在于代码,而在于图像本身。在我的情况下,解决方案是将照片手动调整为我想要的尺寸(IE 24x24或64x64)并将它们放入正确的文件夹中。

我尝试了很多东西,但它似乎是

<item name="android:minHeight">24dip</item>
<item name="android:maxHeight">64dip</item>

对我来说,一些代码不会做任何事情。尝试调整图像大小,看看是否能修复它。

-Sil

答案 4 :(得分:0)

设置android:layout_height="0dp"

https://stackoverflow.com/a/44992485/4238544