輪轉選單可讓使用者從一組值中輕鬆選取某個值。在預設情況下,旋轉圖示會顯示目前選取的值。輕觸旋轉圖示會顯示選單,列出使用者可選取的所有其他值。
您可以使用 Spinner
物件在版面配置中加入旋轉圖示,通常在 XML 版面配置中利用 <Spinner>
元素進行操作。如以下範例所示:
<Spinner android:id="@+id/planets_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" />
如要在輪轉選單中填入選項清單,請在 Activity
或 Fragment
原始碼中指定 SpinnerAdapter
。
如果您使用 Material Design 元件,顯示的下拉式選單相當於 Spinner
。
在旋轉圖示中填入使用者選項
您為輪轉選單提供的選項可來自任何來源,但必須透過 ArrayAdapter
提供,例如如果選項可在陣列中採用,或是以 CursorAdapter
提供 (如果資料庫查詢有可用選項),您就必須透過 SpinnerAdapter
提供。
舉例來說,如果輪轉選單可用的選項已預先決定,您可以透過字串資源檔案中定義的字串陣列提供這些選項:
<?xml version="1.0" encoding="utf-8"?> <resources> <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>
建立這類陣列後,您可以在 Activity
或 Fragment
中使用下列程式碼,透過 ArrayAdapter
的執行個體為輪轉選單提供陣列:
Kotlin
val spinner: Spinner = findViewById(R.id.planets_spinner) // Create an ArrayAdapter using the string array and a default spinner layout. ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item ).also { adapter -> // Specify the layout to use when the list of choices appears. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) // Apply the adapter to the spinner. spinner.adapter = adapter }
Java
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner); // Create an ArrayAdapter using the string array and a default spinner layout. ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item ); // Specify the layout to use when the list of choices appears. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // Apply the adapter to the spinner. spinner.setAdapter(adapter);
createFromResource()
方法可讓您透過字串陣列建立 ArrayAdapter
。這個方法的第三個引數是版面配置資源,可定義所選選項在旋轉圖示控制項中的顯示方式。平台提供 simple_spinner_item
版面配置。除非您要自行定義輪轉選單的外觀,否則此為預設版面配置。
呼叫 setDropDownViewResource(int)
以指定轉接程式用來顯示旋轉圖示選項清單的版面配置。simple_spinner_dropdown_item
是平台定義的另一個標準版面配置。
呼叫 setAdapter()
,將轉接器套用至 Spinner
。
回應使用者的選擇
當使用者從旋轉圖示的選單中選取項目時,Spinner
物件會收到項目選取事件。
如要定義輪轉選單的選取事件處理常式,請實作 AdapterView.OnItemSelectedListener
介面和對應的 onItemSelected()
回呼方法。例如,以下在 Activity
中實作介面:
Kotlin
class SpinnerActivity : Activity(), AdapterView.OnItemSelectedListener { ... override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) { // An item is selected. You can retrieve the selected item using // parent.getItemAtPosition(pos). } override fun onNothingSelected(parent: AdapterView<*>) { // Another interface callback. } }
Java
public class SpinnerActivity extends Activity implements OnItemSelectedListener { ... public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { // An item is selected. You can retrieve the selected item using // parent.getItemAtPosition(pos). } public void onNothingSelected(AdapterView<?> parent) { // Another interface callback. } }
AdapterView.OnItemSelectedListener
介面需要 onItemSelected()
和 onNothingSelected()
回呼方法。
呼叫 setOnItemSelectedListener()
以指定介面實作:
Kotlin
val spinner: Spinner = findViewById(R.id.planets_spinner) spinner.onItemSelectedListener = this
Java
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner); spinner.setOnItemSelectedListener(this);
如果您使用 Activity
或 Fragment
實作 AdapterView.OnItemSelectedListener
介面,如上述範例所示,您可以將 this
做為介面執行個體傳遞。