<1>簡介
RatingBar為評分條控制項,預設效果為若干個綠色的星星,如果想將其換成其他自訂圖片就要自訂它的style。
RatingBar是SeekBar 和 ProgressBar 的一種擴充,用星星表示等級。
當RatingBar使用預設的大小,使用者可以點擊/拉拽或使用方向鍵來設定等級。當RatingBar使用預設的大小。
它有兩種樣式(小風格用ratingBarStyleSmall,大風格用ratingBarStyleIndicator),其中大的只適合指示,不適合於使用者互動(使用者無法改變)。
當使用可以支援使用者互動的RatingBar時,無論將控制項(widgets)放在它的左邊還是右邊都是不合適的。
只有當布局的寬被設定為wrap content時,設定的星星數量(通過函數setNumStars(int)或者在XML的布局檔案中定義)將顯示出來(如果設定為另一種布局寬的話,後果無法預知)。
次級進度一般不應該被修改,因為他僅僅是被當作星型部分內部的填充背景。
<2>屬性
屬性名稱 |
描述 |
android:isIndicator |
RatingBar是否是一個指標(使用者無法變更) |
android:numStars |
顯示的星型數量,必須是一個整形值,像“100”。 |
android:rating |
預設的評分,必須是浮點類型,像“1.2”。 |
android:stepSize |
評分的步長,必須是浮點類型,像“1.2”。 |
<3>方法:
public int getNumStars()
返回顯示星星總共的的數目。
public float getRating()
擷取當前等級(滿星星的數目)。
public float
getStepSize()
得到RatingBar的步長。
public boolean
isIndicator()
返回這RatingBar是否只是一個指標(只是起指示作用,使用者無法進行互動)。
public synchronized void
setMax(int max)
設定這個進度條的範圍為0……max
public void
setNumStars(int numStars)
設定星星的數目。
public void
setRating(float rating)
設定等級(星星的填充數目)。
public void
setStepSize(float stepSize)
設定RatingBar的步長。
<4>範例
package xiaosi.ratingbar;import android.app.Activity;import android.os.Bundle;import android.widget.RatingBar;public class RatingBarActivity extends Activity { /** Called when the activity is first created. */private RatingBar ratingbar = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ratingbar = (RatingBar)findViewById(R.id.ratingbar); ratingbar.setOnRatingBarChangeListener(new RatingBarListener()); } private class RatingBarListener implements RatingBar.OnRatingBarChangeListener{public void onRatingChanged(RatingBar ratingBar, float rating,boolean fromUser) {System.out.println("等級:" + rating);System.out.println("星星:" + ratingBar.getNumStars());} }}
main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="第一種風格(可互動)" /> <RatingBar android:id="@+id/ratingbar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:stepSize="1"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第二種風格(ratingBarStyleSmall)" /> <RatingBar android:id="@+id/ratingbar2" style="?android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:stepSize="1"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="第三種風格(ratingBarStyleIndicator)" /> <RatingBar android:id="@+id/ratingbar3" style="?android:attr/ratingBarStyleIndicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:stepSize="1"/></LinearLayout>