?
Dieses Dokument verwendet PHP-Handbuch für chinesische Websites Freigeben
RatingBar ?
翻譯人:wallace2010/ madgoat
譯者博客:http://madgoat.cn/、
http://blog.csdn.net/springiscoming2008
版本:Android 2.2 r1
?
public class RatingBar extends AbsSeekBar
?
java.lang.Object
???????? android.view.View
? ????????????? android.widget.ProgressBar
? ???? ??????????????? android.widget.AbsSeekBar
? ???? ?????? ??????????????? android.widget.RatingBar
?
類概述
RatingBar是基于SeekBar和ProgressBar的擴(kuò)展,用星型來顯示等級評定。使用RatingBar的默認(rèn)大小時,用戶可以觸摸/拖動或使用鍵來設(shè)置評分,它有兩種樣式(小風(fēng)格用ratingBarStyleSmall,大風(fēng)格用ratingBarStyleIndicator),其中大的只適合指示,不適合于用戶交互。
當(dāng)使用可以支持用戶交互的RatingBar時,無論將控件(widgets)放在它的左邊還是右邊都是不合適的。
只有當(dāng)布局的寬被設(shè)置為wrap? content時,設(shè)置的星星數(shù)量(通過函數(shù)setNumStars(int)或者在XML的布局文件中定義)將顯示出來(如果設(shè)置為另一種布局寬的話,后果無法預(yù)知)。
次級進(jìn)度一般不應(yīng)該被修改,因?yàn)樗麅H僅是被當(dāng)作星型部分內(nèi)部的填充背景。
參見Form Stuff tutorial.
?
嵌套類
接口:RatingBar.OnRatingBarChangeListener
一個回調(diào)函數(shù),當(dāng)星級進(jìn)度改變時修改客戶端的星級。
?
XML屬性
屬性名稱 |
描述 |
android:isIndicator |
RatingBar是否是一個指示器(用戶無法進(jìn)行更改) |
android:numStars |
顯示的星型數(shù)量,必須是一個整形值,像“100”。 |
android:rating |
默認(rèn)的評分,必須是浮點(diǎn)類型,像“1.2”。 |
android:stepSize |
評分的步長,必須是浮點(diǎn)類型,像“1.2”。 |
?
公共方法???????
???????? public int getNumStars ()
返回顯示的星型數(shù)量
返回值
??????????????????????????? 顯示的星型數(shù)量
?
public RatingBar.OnRatingBarChangeListener getOnRatingBarChangeListener ()
返回值
監(jiān)聽器(可能為空)監(jiān)聽評分改變事件
?
public float getRating ()
獲取當(dāng)前的評分(填充的星型的數(shù)量)
返回值
當(dāng)前的評分
?
public float getStepSize ()
獲取評分條的步長
返回值
The step size.
步長
?
public boolean isIndicator ()
返回值
??????????????????????????? 判斷當(dāng)前的評分條是否僅僅是一個指示器(注:即能否被修改)
?
public void setIsIndicator (boolean isIndicator)
設(shè)置當(dāng)前的評分條是否僅僅是一個指示器(這樣用戶就不能進(jìn)行修改操作了)
參數(shù)
isIndicator ????? Bool值,是否是一個指示器
?
public synchronized void setMax (int max)
設(shè)置評分等級的范圍,從0到max
參數(shù)
max ??????? 評分條最大范圍。
?
public void setNumStars (int numStars)
設(shè)置顯示的星型的數(shù)量。為了能夠正常顯示它們,建議將當(dāng)前widget的布局寬度設(shè)置為wrap content
參數(shù)
numStars ??????? 星型的數(shù)量
?
public void setOnRatingBarChangeListener (RatingBar.OnRatingBarChangeListener listener)
設(shè)置當(dāng)評分等級發(fā)生改變時回調(diào)的監(jiān)聽器
參數(shù)
listener ? 監(jiān)聽器
?
public void setRating (float rating)
設(shè)置分?jǐn)?shù)(星型的數(shù)量)
參數(shù)
rating ???? 設(shè)置的分?jǐn)?shù)
?
public void setStepSize (float stepSize)
設(shè)置當(dāng)前評分條的步長(step size)
參數(shù)
stepSize 評分條的步進(jìn)。例如:如果想要半個星星,它的值為0.5。
?
受保護(hù)方法
protected synchronized void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
權(quán)衡 view 和 content 來決定它的寬度和高度的整齊。它被measure(int, int) 調(diào)用 并且應(yīng)該被子類所覆蓋,以便提供準(zhǔn)確高效的布局測量。
規(guī)定: 當(dāng)覆蓋這個方法的時候,你必須調(diào)用 setMeasuredDimension(int, int)以便存儲精確的視圖的寬和高。如果不這樣做的話將觸發(fā)llegalStateException異常,被函數(shù) measure(int, int)拋出。調(diào)用父類 onMeasure(int, int)是合理的。
尺寸的基本類的實(shí)現(xiàn)默認(rèn)是背景大小,除非通過MeasureSpec允許大的尺寸。子類應(yīng)該覆蓋 onMeasure(int, int) 以便提供更好的布局大小。
如果這個方法被覆蓋,子類應(yīng)該負(fù)責(zé)確保標(biāo)準(zhǔn)的寬和高至少是視圖的最小寬度和高度的值(分別為getSuggestedMinimumHeight() 和 getSuggestedMinimumWidth()兩方法)。
參數(shù)
?????? widthMeasureSpec???? 受主窗口支配的水平空間要求。這個需求通過 View.MeasureSpec.進(jìn)行編碼。
?????? heightMeasureSpec?? 受主窗口支配的垂直空間要求。這個需求通過 View.MeasureSpec.進(jìn)行編碼。
?
補(bǔ)充
???????? 文章鏈接
?????????????????? Android 控件之RatingBar評分條
?????????????????? Android更換RatingBar圖片
?????????????????? [Android學(xué)習(xí)指南]RatingBar 評分條
???????? 示例代碼( 代碼轉(zhuǎn)載自Android手機(jī)開發(fā)者論壇 )
AndroidRatingBar.java
public class AndroidRatingBar extends Activity {
??
?? @Override
?? public void onCreate(Bundle savedInstanceState) {
?????? super.onCreate(savedInstanceState);
?????? setContentView(R.layout.main);
?
?????? final RatingBar ratingBar_Small = (RatingBar)findViewById(R.id.ratingbar_Small);
?????? final RatingBar ratingBar_Indicator = (RatingBar)findViewById(R.id.ratingbar_Indicator);
?????? final RatingBar ratingBar_default = (RatingBar)findViewById(R.id.ratingbar_default);
?
?????? ratingBar_default.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener(){
?
?? public void onRatingChanged(RatingBar ratingBar, float rating,
???? boolean fromUser) {
??? ratingBar_Small.setRating(rating);
??? ratingBar_Indicator.setRating(rating);
??? Toast.makeText(AndroidRatingBar.this, "rating:"+String.valueOf(rating),
????? Toast.LENGTH_LONG).show();
?? }});
?? }
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
?? android:orientation="vertical"
?? android:layout_width="fill_parent"
?? android:layout_height="fill_parent"
?? >
<TextView
?? android:layout_width="fill_parent"
?? android:layout_height="wrap_content"
?? android:text="@string/hello"
?? />
<RatingBar
?? android:layout_width="wrap_content"
?? android:layout_height="wrap_content"
?? style="?android:attr/ratingBarStyleIndicator"
?? android:id="@+id/ratingbar_Indicator"
?? />
<RatingBar
?? android:layout_width="wrap_content"
?? android:layout_height="wrap_content"
?? style="?android:attr/ratingBarStyleSmall"
?? android:id="@+id/ratingbar_Small"
?? android:numStars="20"
?? />
<RatingBar
?? android:layout_width="wrap_content"
?? android:layout_height="wrap_content"
?? style="?android:attr/ratingBarStyle"
?? android:id="@+id/ratingbar_default"
?? />
</LinearLayout>