前言
本文根據官方教程適當翻譯而來。(源碼下載)
1.新建工程HelloSpinner
2.在main.xml里面添加一個spinner,設置Android:promt屬性,這是一個提示屬性,同時為默認的textview修改Android:text屬性,它們將引用同一個string文本,如何理解呢,看了下面的圖應該有所意會了。實現的效果是下圖中紅圈內的文字提示:
局部的main.xml如下:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/planet_prompt" />
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:prompt="@string/planet_prompt"/>
3.在onCreate()里面添加操作spinner的代碼:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner spinner = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
}
4.
解釋一下上面的兩句ArrayAdapter.createFromResource(this,R.array.planets_array, android.R.layout.simple_spinner_item);和adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);關於前者它的函數原型如下
public static ArrayAdapter<CharSequence> createFromResource(Context context, int textArrayResId, int textViewResId)
參數:
context 應用的上下文
textArrayResId 數據源數組標識
textViewResId 用於顯示的布局view
返回值:ArrayAdapter<CharSequence>
結合本例, R.array.planets_array 標識了我們要用到的字符串數組.R.layout.simple_spinner_item 標識了系統定義的一個標准的Spinner的布局外觀。
而后者adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);定義的是spinner的每一個item的布局外觀。
5.為了響應用戶選擇下拉框中某一項的事件,還要添加一個OnItemSelectedListener監聽,具體實現是,新建一個MyOnItemSelectedListener 類繼承OnItemSelectedListener類,在其中重寫兩個方法onItemSelected(),onNothingSelected(),它們分別處理item被選中和沒選的事件:
public class MyOnItemSelectedListener implements OnItemSelectedListener
{
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
{
Toast.makeText(parent.getContext(),
"The planet is " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG)
.show();
}
public void onNothingSelected(AdapterView parent)
{
// Do nothing.
}
}
5.OK,運行。(源碼下載)