《Android》『RatingBar』- 星等評分元件的基本用法與如何透過 Shape、layer-list 自訂外觀

《Android Developers 參考文獻》

➥RatingBar

 

《繼承架構》

extends AbsSeekBar


java.lang.Object

android.view.View

 ↳android.widget.ProgressBar

  ↳android.widget.AbsSeekBar

   ↳ android.widget.RatingBar

 

《簡單介紹》

RatingBar 是一種 Android 中內建的星等評價系統,與 SeekBar 一樣,它在使用上繼承自 ProgressBar,也因此 RatingBar 類別中的很多方法均與 ProgressBar 一致,分別有兩種用途,一種是讓使用者可以設定等級評分,另一種則是只顯示評分等級,不接受使用者設定,這邊我們來介紹它的基本用法以及自訂外觀的方式。

➥基本用法

➥透過 Selector 與 layer-list 資源檔自訂 RatingBar 的外觀

基本用法

MainActivity.java

activity_main.xml

以上直接透過程式碼的方式,示範 RatingBar 元件的基本使用方式,並將常用到的設定方法條列如下 –

setMax()、getMax() (android:max)

設定、取得 RatingBar 範圍的最大值。

setNumStars()、getNumStars() (android:numStars)

設定、取得 RatingBar 的最大星型數量(總星級)。

setRating()、gatRating() (android:rating)

設定、取得 RatingBar 目前顯示的星型數量。

setStepSize()、getStepSize() (android:stepSize)

設定、取得 RatingBar 目前的步進值(例如設定為 0.5,則表示每次可更改半顆星)。

setIsIndicator()、isIndicator()

設定、取得 RatingBar 目前是否可被使用者修改評分。

(style=”?android:attr/ratingBarStyleIndicator” 使用者無法修改評分)

(style=”?android:attr/ratingBarStyleSmall” 使用者可以修改評分)

setOnRatingBarChangeListener()

設定 RatingBar 監聽器。

 

透過 Selector 與 layer-list 資源檔自訂 RatingBar 的外觀

要實作自訂 RatingBar 的外觀,我們必須使用 layer-list 資源檔來設定 android:progressDrawable 屬性,相關程式碼如下 –

progress_layer.xml

我們自訂了一個名為 progress_layer.xml 的 layer-list 資源檔,其中我們必須定義三個帶有特定 id 名稱的 <item> 標籤,且不得任意修改 id 名稱,三個 id 分別是 backgroundsecondaryProgress 以及 progress

ratingbar_empty.xml

ratingbar_filled.xml

我們在這三個 <item> 標籤中,分別將 android:drawable 屬性指向了 ratingbar_emptyratingbar_filled 兩個 selector 資源檔,並在這兩個資源檔中定義了在不同觸碰狀態下所使用的圖片。

(此範例中用到了自訂的 star_empty 與 star_filled 兩張圖片,分別代表沒有星星的圖案以及一顆星的圖案,若評分為半星時,系統會自己將兩張圖分成一半顯示,達到半星的效果。)

 

延伸閱讀:

Android 工作筆記總整理

賽肥膩膩

我們是低調到不行的肥膩夫妻檔,一路上一邊吵鬧一邊記錄著生活大小事,最近迷上了宅在家追劇,希望能透過文字將所有看過的影集好好紀錄,整理成屬於我們自己的回憶資料庫。

上 / 下一篇文章

臉書留言

一般留言

  1. 請問自訂圖案的ratingBar要怎麼調整圖案大小呢
    因為圖案太大只能顯示一小部分…
    只能調整原始圖檔嗎?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *