Android 中文 API (40) —— RatingBar
前言
本章內容是 android.widget.RatingBar,譯為"評分條",版本為Android 2.2 r1,翻譯來自"madgoat"和"wallace2010",歡迎大家訪問他們的部落格:http://madgoat.cn/、http://blog.csdn.net/springiscoming2008,再次感謝"madgoat"和"wallace2010"
!期待你加入Android中文翻譯組,聯絡我over140@gmail.com。
宣告
歡迎轉載,但請保留文章原始出處:)
Android中文翻譯組:http://www.cnblogs.com/over140/
正文
一、結構
public class RatingBar extends AbsSeekBar
java.lang.Object
android.widget.ProgressBar
android.widget.RatingBar
二、概述
RatingBar是基於SeekBar和ProgressBar的擴充套件,用星型來顯示等級評定。使用RatingBar的預設大小時,使用者可以觸控/拖動或使用鍵來設定評分,它有兩種樣式(小風格用ratingBarStyleSmall,大風格用ratingBarStyleIndicator),其中大的只適合指示,不適合於使用者互動。
當使用可以支援使用者互動的RatingBar時,無論將控制元件(widgets)放在它的左邊還是右邊都是不合適的。
只有當佈局的寬被設定為wrap content時,設定的星星數量(通過函式setNumStars(int)或者在XML的佈局檔案中定義)將顯示出來(如果設定為另一種佈局寬的話,後果無法預知)。
次級進度一般不應該被修改,因為他僅僅是被當作星型部分內部的填充背景。
三、巢狀類
介面:RatingBar.OnRatingBarChangeListener
一個回撥函式,當星級進度改變時修改客戶端的星級。
四、XML屬性
屬性名稱 |
描述 |
android:isIndicator |
RatingBar是否是一個指示器(使用者無法進行更改) |
android:numStars |
顯示的星型數量,必須是一個整形值,像“100”。 |
android:rating |
預設的評分,必須是浮點型別,像“1.2”。 |
android:stepSize |
評分的步長,必須是浮點型別,像“1.2”。 |
五、公共方法
public int getNumStars ()
返回顯示的星型數量
返回值
顯示的星型數量
public RatingBar.OnRatingBarChangeListener getOnRatingBarChangeListener ()
返回值
監聽器(可能為空)監聽評分改變事件
public float getRating ()
獲取當前的評分(填充的星型的數量)
返回值
當前的評分
public float getStepSize ()
獲取評分條的步長
返回值
步長
public boolean isIndicator ()
返回值
判斷當前的評分條是否僅僅是一個指示器(注:即能否被修改)
public void setIsIndicator (boolean isIndicator)
設定當前的評分條是否僅僅是一個指示器(這樣使用者就不能進行修改操作了)
引數
isIndicator Bool值,是否是一個指示器
public synchronized void setMax (int max)
設定評分等級的範圍,從0到max
引數
max 評分條最大範圍。
public void setNumStars (int numStars)
設定顯示的星型的數量。為了能夠正常顯示它們,建議將當前widget的佈局寬度設定為
wrap content
引數
numStars 星型的數量
public void setOnRatingBarChangeListener (RatingBar.OnRatingBarChangeListener listener)
設定當評分等級發生改變時回撥的監聽器
引數
listener 監聽器
public void setRating (float rating)
設定分數(星型的數量)
引數
rating 設定的分數
public void setStepSize (float stepSize)
設定當前評分條的步長(step size)
引數
stepSize 評分條的步進。例如:如果想要半個星星,它的值為0.5。
六、受保護方法
protected synchronized void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
權衡 view 和 content 來決定它的寬度和高度的整齊。它被measure(int, int) 呼叫 並且應該被子類所覆蓋,以便提供準確高效的佈局測量。
規定: 當覆蓋這個方法的時候,你必須呼叫 setMeasuredDimension(int, int)以便儲存精確的檢視的寬和高。如果不這樣做的話將觸發llegalStateException異常,被函式 measure(int, int)丟擲。呼叫父類 onMeasure(int, int)是合理的。
尺寸的基本類的實現預設是背景大小,除非通過MeasureSpec允許大的尺寸。子類應該覆蓋 onMeasure(int, int) 以便提供更好的佈局大小。
如果這個方法被覆蓋,子類應該負責確保標準的寬和高至少是檢視的最小寬度和高度的值(分別為getSuggestedMinimumHeight() 和 getSuggestedMinimumWidth()兩方法)。
引數
widthMeasureSpec 受主視窗支配的水平空間要求。這個需求通過 View.MeasureSpec.進行編碼。
heightMeasureSpec 受主視窗支配的垂直空間要求。這個需求通過 View.MeasureSpec.進行編碼。
七、補充
文章連結
示例程式碼(程式碼轉載自Android手機開發者論壇)
Java檔案
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public class AndroidRatingBar extends Activity {
/** Called when the activity is first created. */
@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();
}});
}
}
XML檔案
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?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>
結束
本文為"madgoat"和"wallace2010"聯合署名,原因是翻譯重了,不過兩個翻譯得都很好,這樣翻譯重的事件也將隨著管理的完善得意解決,感謝兩位的相互理解,感謝大家的支援!
轉自:http://www.cnblogs.com/over140/archive/2010/11/18/1880391.html相關文章
- Android中文API(137) —— LocalSocketAndroidAPI
- Android中文API(129) —— AudioManagerAndroidAPI
- Android中文API(128) —— HandlerThreadAndroidAPIthread
- [Android]中文API(一)android包下的那些類AndroidAPI
- Android RatingBar自定義替換系統圖片Android
- 自定義RatingBar
- [Android]中文API(二)android.accessibilityservice包下的那些類AndroidAPI
- XMemcached 中文apiAPI
- Android2.2 API 中文文件系列(4) —— ManifestAndroidAPI
- Android2.2 API 中文文件系列(3) —— AccessibilityServiceAndroidAPI
- ext 線上中文apiAPI
- JFreeChart中文APIAPI
- JAVA EE 中文APIJavaAPI
- PopupWindow使用詳解(一)中文API文件贈送ListPopupWindow中文APIAPI
- 自定義簡單的RatingBar
- Android APIAndroidAPI
- android——apiAndroidAPI
- bigbluebutton中文社群 / 開放API / bbb APIAPI
- POI匯入Excel中文API文件ExcelAPI
- DOJO API 中文參考手冊API
- mori.js 中文API(親測)JSAPI
- java.util.concurrent中文APIJavaAPI
- 支援Java API Docs中文版JavaAPI
- android的api地址AndroidAPI
- ASP.NET Web API 中文版ASP.NETWebAPI
- Android API相容,其他API,UI適配(3)AndroidAPIUI
- Android API相容,其他API,UI適配(2)AndroidAPIUI
- 【譯】Android API 規範AndroidAPI
- reCAPTCHA Android API 簡介APTAndroidAPI
- Koa v2.x 中文文件 APIAPI
- jQuery AjaxUpload中文使用API和demo示例jQueryAPI
- api中文化之Rust-curl(上)APIRust
- Android API相容,其他API,UI適配(------ 分割線 -----)AndroidAPIUI
- 對Android開發者有益的40條優化建議Android優化
- 練習maya python API jointChain中文標註PythonAPIAI
- jQuery中文API下載(適用版本1.4.4~1.6.1)jQueryAPI
- Java API Docs 1.6 中文版下載地址JavaAPI
- Android實現模組 api 化AndroidAPI