Spinner是一種下拉式選單元件,提供多個選項讓使用者選擇,平時為收縮起來狀態,只會出現目前被選取的項目,節省佔據螢幕的空間。
建立Spinner選單有兩種方式,用程式或XML資源檔。
用程式建立Spinner選單
步驟一:在版面資源檔XML內建立一個Spinner元件如下:<Spinner android:id="@+id/spnList" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawSelectorOnTop="true" android:transcriptMode="alwaysScroll" android:spinnerMode="dialog" android:prompt="@string/spnPrompt" />Spinner屬性說明:
android:drawSelectorOnTop | true, false | 被選擇的項目是否要被反白的顏色遮住,true為反白的顏色會遮住被選擇的文字。 |
android:transcriptMode | disabled, normal, alwaysScroll | 自動捲動設定。 |
android:spinnerMode | dialog, dropdown | 清單顯示方式,dialog為對話盒方式,dropdown為下拉式選單。 |
android:prompt | 顯示在元件上方的提示訊息。 |
Spinner spnList = (Spinner)findViewById(R.id.spnList);步驟三:建立String陣列,定義好要顯示的清單項目
String[] strArray = new String[] {"選項一", "選項二", "選項三"};步驟四:建立資料型態為
String
的ArrayAdapter
物件
ArrayAdapter<String> adapList = new ArrayAdapter(this, android.R.layout.simple_spinner_item, strArray); adapList.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
android.R.layout.simple_spinner_item
和android.R.layout.simple_spinner_dropdown_item
都是Android內建的選單樣式。而在建立Adapter物件時傳入的樣式為Spinner靜止時的顯示樣式,setDropDownViewResource()
為設定選單被下拉時的樣式,兩種樣式可以不同,如果打算一樣時,可以省略setDropDownViewResource()
的呼叫。
步驟五:將Adapter傳遞給給Spinner
spnList.setAdapter(adapList);
建立傾聽器, 用來處理選項被選擇時的通知
// 建立Spinner傾聽器 Spinner.OnItemSelectedListener spnListener = new Spinner.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { // 將選項被選擇時要做的事情寫在這個方法內 } public void onNothingSelected(AdapterView<?> arg0) { } };
將傾聽器設定給Spinner
spnList.setOnItemSelectedListener(spnListener);
使用XML資源檔的方式建立Spinner選單
當Spinner內的清單項目是固定時,也可以使用XML來建立清單,以利維護及減少程式碼。要使用XML來建立清單,步驟與用程式建立大同小異,只有在定義清單項目的陣列與建立ArrayAdapter
這兩個步驟不同,也就是步驟三和步驟四。
string-array
元素來定義清單項目
<xml version="1.0" encoding="utf-8"?> <resources> <string-array name="stringArray"> <item>項目一</item> <item>項目二</item> <item>項目三</item> </string-array> </resources>步驟四:建立資料型態為
CharSequence
的ArrayAdapter
物件
ArrayAdapter<CharSequence> adapList = ArrayAdapter.createFromResource(this, R.array.stringArray, android.R.layout.simple_spinner_item); adapList.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);