Spinner是一個widget,使用方式類似下拉式選單,Spinner允許使用者從一個選項中選出其中一個,當列表大於且超過螢幕大小時,會自動變成可捲軸。
小試身手小範例:
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10sp"
android:textSize="20sp"
android:text="Please select a color:"
/>
<Spinner
android:id="@+id/spinner01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true" <!-— 註解一 -->
android:prompt="@string/color_prompt"
android:layout_marginTop="20sp"
/>
</LinearLayout>
下一步驟、新增Spinner元件之後,新增下列程式碼到strings.xml中
res/value/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, TestExam001!</string>
<string name="app_name">Spinner Application</string>
<string name="color_prompt">Choose a color</string>
</resources>
下一步驟、在res/value/建立一個名為arrays.xml的文件 (切勿命名為array.xml)
res/value/arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="colors">
<item>Red</item>
<item>Blue</item>
<item>Pink</item>
<item>Orange</item>
<item>Green</item>
<item>Yellow</item>
<item>White</item>
<item>Black</item>
<item>Brown</item>
</string-array>
</resources>
Java檔
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.Spinner;
publicclass TestExam001 extends Activity {
/** Called when the activity is first created. */
@SuppressWarnings("unchecked") //注解二
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner SpinnerS = (Spinner)findViewById(R.id.spinner01);
//設定功能表項目陣列,使用createFromResource()
ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.colors,
android.R.layout.simple_spinner_item);
//設定選單
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//設定adapter
SpinnerS.setAdapter(adapter);
}
}
註一、android:drawSelectorOnTop="true"
When set to true, the selector will be drawn over the selected item. Otherwise the selector is drawn behind the selected item. The default value is false. 若設為true點擊某一項紀錄,顏色會顯示在最上面,記錄上的文字則會被遮住,此時文字就看不到了,反之若設為false,點擊某一項記錄,顏色會在記錄後面成為背景色,然而文字是清楚可看之。
註二、@SuppressWarnings("unchecked")
是J2SE 5.0中標準的Annotation型態之一,它對編譯器說明某個方法中若有警示訊息,則加以抑制,不用在編譯完成後出現警訊。