引言 上一篇的CheckBox已經讓大家越來越接近實戰演練了,本章我們繼續分享乾貨給大家,今天介紹一個實用的UI控制項RatingBar(星級評分條),對於使用過電商APP(某東,某寶等)的小伙伴們來說,應該不會陌生。在對商品進行評價時,經常會出現五星好評的評分樣式,這個五星評分樣式就是今天的主角Ra ...
上一篇的CheckBox
已經讓大家越來越接近實戰演練了,本章我們繼續分享乾貨給大家,今天介紹一個實用的UI控制項RatingBar
(星級評分條),對於使用過電商APP(某東,某寶等)的小伙伴們來說,應該不會陌生。在對商品進行評價時,經常會出現五星好評的評分樣式,這個五星評分樣式就是今天的主角RatingBar
。
RatingBar
:用於評分和展示的星級評分控制項。
public class RatingBar extends AbsSeekBar java.lang.Object ↳ android.view.View ↳ android.widget.ProgressBar ↳ android.widget.AbsSeekBar ↳ android.widget.RatingBar
由上面的繼承結構可以看出,RatingBar
是基於SeekBar
和ProgressBar
的擴展。
基本使用
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <RatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
在項目里直接放一個RatingBar
,看下運行效果:
可以看出,系統給我們提供了一套預設的樣式與代碼邏輯,如果想實現我們自己的樣式邏輯,可在此基礎上進行修改。
XML常用屬性
android:isIndicator
:是否用作指示,即用戶是否可點擊更改,預設false(可點擊)。
android:numStars
:顯示多少個星星,必須為整數。
android:rating
:預設評分值,必須為浮點數。
android:stepSize
: 評分每次增加的值,必須為浮點數。
除了上面這些,系統還為我們提供了三種樣式,供我們選擇:
使用示例:
上面介紹系統提供的三種樣式,主要是改變星星的大小,如果需要使用其他樣式,還需要進行自定義,方式如下:
1.在drawable
下編寫一個layer-list
文件ratingbar_layer
。
<?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_off"/> <item android:id="@android:id/progress" android:drawable="@drawable/rating_on"/> </layer-list>
註意:drawable
中引用的圖片,需要根據設計圖尺寸,放在不同屏幕密度的drawable
文件夾下,用於屏幕適配。
2.在values
文件夾下styles.xml
文件中添加style
樣式。
<style name="my_ratingBar" parent="@android:style/Widget.RatingBar"> <item name="android:progressDrawable">@drawable/ratingbar_layer</item> <item name="android:minHeight">24dp</item> <item name="android:maxHeight">24dp</item> </style>
3.在xml
佈局里進行使用。
<RatingBar android:id="@+id/ratingbar" style="@style/my_ratingBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:rating="3" android:stepSize="1" />
監聽處理
很多時候,我們還需要對星星的選擇事件進行監聽,獲取用戶選擇的星星數量,這就需要我們在代碼中進行監聽操作。
RatingBar ratingBar = findViewById(R.id.ratingbar); //星星變化監聽 ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { @Override public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { Toast.makeText(MainActivity.this, "rating==" + String.valueOf(rating), Toast.LENGTH_SHORT).show(); } });
結語
以上就是RatingBar
的使用介紹,是不是so easy,趕快在項目中使用吧!也麻煩各位小伙伴們以後看完我們的文章順手點個贊吧~ 如果小伙伴想學習更多知識或者快速學習進階,可以加入我們的WXGZH:下碼看花一起探討~