下拉式選單(Spinner)
在手機上的下拉式選單,有些不同,它會跳出一個對話框,裡面顯示有許多項目的列表。
創建一個spinner的步驟:
1.在main.xml文件中宣告spinner。
2.在strings.xml文件中宣告一個數據組。
3.創建一個ArrayAdapter物件。
4.取得Spinner物件,並設置數據。
5.創建一個監聽器。
6.綁定監聽器。
那現在就依步驟來實現Spinner
首先宣告一個Spinner
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="10dip" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:text="@string/planet_prompt" /> <Spinner android:id="@+id/spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" android:prompt="@string/planet_prompt" /> </LinearLayout>
android:prompt屬性是設定spinner的對話框中的標題。
藉著第二步,在strings.xml文件中宣告數據陣列。
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="planet_prompt">Choose a planet</string> <string-array name="planets_array"> <item>Mercury</item> <item>Venus</item> <item>Earth</item> <item>Mars</item> <item>Jupiter</item> <item>Saturn</item> <item>Uranus</item> <item>Neptune</item> </string-array> </resources>
再來回到java文件中完成其他步驟
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //通過ID取得Spinner物件 Spinner spinner = (Spinner) findViewById(R.id.spinner); //通過createFromResource方法創建一個ArrayAdapter物件 //第一個參數為context //第二個參數引用了strings.xml文件中定義的string數據組 //第三個參數指定spinner顯示的樣式,是一個布局文件,由android系統提供的布局文件,也可用 由自己定義布局文件 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item); //設定spinner中各項目的樣式,由android提供的布局文件 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); }
設定監聽器
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. } }
為spinner設置監聽器
spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
按照以上的步驟完成,就可以實現spinner。
那還有另外一種實現spinner的方上,在以上的方式,我們將所有的數據都寫死在strings.xml文件中,然後ArrayAdapter物件到strings.xnl文件中讀取數據。除此之外我們還可以動態的創建ArrayAdapter物件。
List<String> list = new ArrayList<String>();
list.add("Mercury");
list.add("Venus");
//第一個參數為context
//第二個參數指定了spinner的樣式,自己定義的布局文件(這裡定義了有一個TextView的布局文件) //第三個參數指定textView的ID
//第四個參數為整個spinner提供數據 ArrayAdapter adapter = new ArrayAdapter(this , R.layout.item , R.id.textViewId , list);
其他部分都差不多,在這裡我們自己定義了spinner列表項目的樣式,所以開發者可以依自己需求開發自己的spinner樣式。
沒有留言:
張貼留言