Android中Spinner用法詳解
阿新 • • 發佈:2019-02-03
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.AdapterView<T extends android.widget.Adapter>
android.widget.AbsSpinner
android.widget.Spinner
從上面的繼承關係可以看出這個控制元件其實很像listview,載入的資料和listview很相似.
Spinner、listview、Gallery都繼承了AbsSpinner,AbsSpinner繼承了AdapterView,因此他也表現出AdapterView的特徵:只要為AdapterView提供Adapter即可。
首先介紹些常用屬性:
android:spinnerMode //顯示模式 :popu和dialog兩種
android:dropDownWidth="230dp"//顯示彈出框的寬度
android:popupBackground="#66ccff"//顯示彈出框的背景顏色
android:entries="@array/week"//新增XML佈局
android:prompt //當顯示模式為dialog時生效,作用為顯示dialog的標題內容
android:prompt 屬性使用常見問題:
- 設定之後不起作用:prompt屬性只有在dialog狀態才有用,所以要在xml中,將style設定為Widget.Spinner
-
prompt屬性要用string下資源,不支援字元直接輸入,否則會報錯誤
兩種寫法
- XML檔案中設定資料來源
<Spinner android:id="@+id/spinner_arrays" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="50dp" android:dropDownWidth="230dp" android:entries="@array/week" android:popupBackground="#66ccff" android:spinnerMode="dropdown"></Spinner>
values/arrays.xml檔案
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="week">
<item >星期一</item>
<item >星期二</item>
<item >星期三</item>
<item >星期四</item>
<item >星期五</item>
<item >星期六</item>
<item >星期天</item>
</string-array>
</resources>
- 程式碼中設定資料來源
<Spinner
android:id="@+id/spinner_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:spinnerMode="dropdown"></Spinner>
codeSp = (Spinner) findViewById(R.id.spinner_code);
final String[] arr={"深圳","上海","北京","山西"};
//建立ArrayAdapter物件
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,arr);
codeSp.setAdapter(adapter);
/**選項選擇監聽*/
codeSp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(SpinnerTestActivity.this, "點選了" + arr[position], Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
XML特點是方便快捷,缺點是不能動態改變要顯示的資料,使用介面卡特點是靈活多變,針對專案需求來選擇.