Android中RatingBar的自定义总结

本篇基于Android系统默认的RatingBar进行美化

1.先上个效果图

Android中RatingBar的自定义总结

2.配置文件中的代码:

<RatingBar

android:id="@+id/room_ratingbar"

style="@style/roomRatingBar"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="10dip">

</RatingBar>

自定义ratingbar主要是这段style="@style/roomRatingBar"

3.编写styles.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

<style name="roomRatingBar" parent="@android:style/Widget.RatingBar">

<item name="android:progressDrawable">@drawable/room_rating_bar</item>

<item name="android:minHeight">16dip</item>

<item name="android:maxHeight">16dip</item>

</style>

</resources>

注解:第一句 parent="@android:style/Widget.RatingBar" 是继承系统的RatingBar的样式

第二句重写android:progressDrawable属性,换成我们自定义@drawable/room_rating_bar文件。

第三、四句 控制该组件的最大和最小高度

4.room_rating_bar.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/room_unselect"></item>

<item android:id="@+android:id/secondaryProgress"

android:drawable="@drawable/room_unselect"></item>

<item android:id="@+android:id/progress"

android:drawable="@drawable/room_select"></item>

</layer-list>

其实真相就在这个配置文件中。这里就是定义组件的背景图片、一级进度背景图片和二级进度背景图片(里面这些id都是系统的id,当系统运行到这里时会自动根据这个id去重画组件)

源码出处:在android framework\base\core\res\res\values(android framework是我保存源码的目录)目录下找到styles.xml文件,该文件是android系统运行时所要加载的文件,里面保存了所有组件的样式定义。在里面你可以找到<style name="Widget.RatingBar">我们之前继承的其中一个组件样式,也有其他<style name="Widget.RatingBar.Small">、<style name="Widget.SeekBar">、<style name="Widget.ProgressBar.Small">等等。这样里面的属性我们继承后就可以被重写成其他的了。

你可能感兴趣的:(android,移动开发,的,效果图)