本文介紹的是Android常用控件Spinner的使用方法
下面是導讀:
1.什麼時Spinner
2.如何使用Spinner
3.總結
1.什麼是Spinner?
Spinner提供了從一個數據集合中快速選擇一項值的辦法。默認情況下Spinner顯示的是當前選擇的值,點擊Spinner會彈出一個包含所有可選值的dropdown菜單,從該菜單中可以爲Spinner選擇一個新值。
下圖是Android6.0系統的Spinner樣式:
2.如何使用Spinner?
靜態添加數據:
第一步:設計xml佈局
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/languages"
/>
</LinearLayout>
佈局中僅有一個Spinner控件
第二步:在res-values-string.xml文件裏新添加數組資源如下
<string-array name="it">
<item>c語言</item>
<item>c++</item>
<item>Java</item>
<item>Python</item>
<item>PHP</item>
</string-array>
在resources標籤內直接添加條目就可以。
第三步:在Activity類中添加內容
聲明變量:
//下拉菜單
private Spinner spinner;
在onCreate()方法裏添加以下內容
//初始化spinner對象
spinner= (Spinner) findViewById(R.id.spinner);
//設置適配器
/*參數1:context上下文
參數2:設置好的數據
參數3:系統默認Spinner初始佈局(打開Activity顯示的Spinner佈局)
*/
final ArrayAdapter<CharSequence> spinneradapter=ArrayAdapter.createFromResource(
this,R.array.it,android.R.layout.simple_spinner_item
);
//設置展示的項佈局(點擊下拉按鈕後展示的佈局)
//此處使用的是系統默認佈局 spinneradapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//設置適配器
spinner.setAdapter(spinneradapter);
//設置監聽器
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String se=parent.getItemAtPosition(position).toString();
//獲取用戶選擇
Toast.makeText(LoginActivity.this,se,Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(LoginActivity.this,"未選擇",Toast.LENGTH_SHORT).show();
}
});
動態添加數據:
首先動態添加數據的xml文件是和靜態添加一樣的,不同的是第二步內容如下:
在onCreate()方法裏添加如下內容:
//首先獲取spinner對象
spinner= (Spinner) findViewById(R.id.spinner);
//然後使用動態添加的方法來添加數據
List<String> list =new ArrayList<String>();
list.add("數據");
list.add("數據2");
//適配器還是默認的適配器,這邊使用了一個佈局文件,我們可以自定義這個佈局,第一個參數是context,第二個是自定義佈局(列表中每一個條目的樣式),第三個是控件id,第四個是數據
ArrayAdapter adapter=new ArrayAdapter(this,R.layout.item,R.id.textView,list);
//關聯適配器
spinner.setAdapter(spinneradapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String se=parent.getItemAtPosition(position).toString();
//獲取用戶選擇
Toast.makeText(LoginActivity.this,se,Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(LoginActivity.this,"未選擇",Toast.LENGTH_SHORT).show();
}
});
3.總結
Spinner常被用在需要擴展選擇的地方,樣式也是可以自定義,根據自己的需要設置item佈局,配置自己的適配器,從而達到自己想要的風格,不過一般是修改列表項的樣式,至於Spinner收縮時的樣式儘量不要修改,避免用戶造成誤會。
補充:Spinner的一些xml屬性
android:spinnerMode=”dialog/dropdown” 設置下拉樣式還是對話框樣式
android:popupBackground=”圖片地址” 設置下拉模式背景圖片
更多屬性請參考開發者文檔。