你們好,咱們這一節講一下Android下的下拉菜單Spinner,就像是Swing的Combobox,html的<select>,因爲手機畫面有限,要在有限的範圍選擇項目,下拉菜單是比較好的選擇.
Android提供的Spinner Widget的下拉菜單已經很是好用了,樣式也還適用.但咱們本節的Demo的重點在於自定義下拉菜單裏的樣式,其關鍵在於調用setDropDownViewResource方法,以XML的方式定義下拉菜單要顯示的模樣.
Step 1: 建立一個新的Android 工程, 咱們命名爲SpinnerDemo .
Step 2 :打開layout 文件夾,找到main.xml 將其內容改成: html
- <?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="Please select a planet:"
- />
- <Spinner
- android:id="@+id/spinner"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:drawSelectorOnTop="true"
- android:prompt="@string/planet_prompt"
- />
- </LinearLayout>
複製代碼
注意:
the Spinner's android:prompt is a string resource. In this case, Android does not allow it to be a string, it must be a reference to a resource. So...
Step 3:找到在res/values/string.xml,
在裏面加入以下(黑體)一行:
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="hello">Hello World, SpinnerDemo!</string>
- <string name="app_name">SpinnerDemo</string>
- <string name="planet_prompt">Choose a planet</string>
- </resources>
複製代碼
Step 4:在res/values/
文件夾下建立一個xml文件,命名爲arrays.xml:
- <resources>
- <string-array name="planets">
- <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>
複製代碼
這是用戶能夠從Spinner Widget選擇list 的選擇項.
Step 5:打開SpinnerDemo.java,編輯內容以下:
- package com.android.test;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.ArrayAdapter;
- import android.widget.Spinner;
- public class SpinnerDemo
- extends Activity{
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Spinner s = (Spinner) findViewById(R.id.spinner);
- ArrayAdapter adapter = ArrayAdapter.createFromResource(
- this, R.array.planets, android.R.layout.simple_spinner_item);
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- s.setAdapter(adapter);
- }
- }
複製代碼
Step 6: 最後run it
(運行之)效果以下: