坑爹的RatingBar

       Android中的RatingBar控件,设置矮了、窄了就显示不全。网上遍寻自定义大小的文章,简单的问题看得一头雾水,屡试不得。

       突然灵光一现,原来是自己傻了,其实小星星都是系统的或者自备的单个图片,安卓的方法并没去根据宽高同步拉伸,想要符合尺寸的小星星还是得自己先做好。

      下边是方法记录,备忘:

      1.拉伸好想要尺寸的小星星:满的,空的各一张(别指望系统帮你同步拉伸):对应文件 rating_full.png,rating_empty.png

                   

      2.copy到drawble图片文件夹

      3.在Value-style,xml文件中设置好样式 

<style name="my_ratingBar"  parent="Base.Widget.AppCompat.RatingBar">
    <item name="android:progressDrawable">
        @drawable/my_ratingbar</item>
    <item name="android:minHeight">28dip</item>
    <item name="android:maxHeight">28dip</item>
    </style>

  4.在drawble文件夹下新建文件my_ratingbar.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/rating_empty" />
    <item android:id="@android:id/secondaryProgress"
        android:drawable="@drawable/rating_empty" />
    <item android:id="@android:id/progress"
        android:drawable="@drawable/rating_full" />

</layer-list>

  5.在布局文件中直接设置style就行了。

    <RatingBar
        android:id="@+id/ratingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@style/my_ratingBar"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

  

       随便记录一下RatingBar常用属性:

      android:isIndicator:是否用作指示,用户无法更改,默认false
      android:numStars:显示多少个星星,必须为整数
      android:rating:默认评分值,必须为浮点数
      android:stepSize: 评分每次增加的值,必须为浮点数 

      setNumStars()   设置最多显示星星的个数。等同于xml中的android:max=""
      setRating()         设置要显示的星星的个数。等同于xml中的android:rating=""

 

posted @ 2020-08-20 13:55  风肖肖(肖遥)  阅读(291)  评论(0编辑  收藏  举报