【问题标题】:Android: Custom RatingBar - Images do not fitAndroid:自定义 RatingBar - 图片不适合
【发布时间】:2015-09-24 14:45:58
【问题描述】:

在 android 中设置自定义评分栏时我遇到了一些问题。我已按照本教程进行操作:

How to create Custom Ratings bar in Android

但是,我在更改/选择超过 4 颗星时遇到了问题。选择的星图有点错位。这是一张图片,向您展示它的外观。

这是我用于创建自定义评分栏的 XML。

定义评分栏视图的主xml:

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="10dp"
        android:gravity="center" >

        <RatingBar
            android:id="@+id/ratingBar"
            android:layout_width="wrap_content"
            android:layout_height="19dp"
            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" />

我做错了什么,放错了星星?星星(黄色和白色)的图像尺寸相同。

【问题讨论】:

    标签: android xml android-drawable ratingbar


    【解决方案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_width="wrap_content"
                                      android:layout_height="wrap_content"
                                      android:isIndicator="false"
                                      android:numStars="5"/>
      

      【讨论】:

        【解决方案3】:

        这个错误 ||问题实际上与图像的大小有关,两者必须具有相同的大小,我修复此错误的方法是我没有删除填充图像的描边或边框,两个图像必须具有相同的宽度和身高

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-16
          • 1970-01-01
          相关资源
          最近更新 更多