輪轉選單可讓使用者從一組值中輕鬆選取某個值。在預設狀態下,輪轉選單會顯示目前選取的值。輕觸輪轉選單後,畫面上會顯示包含所有其他可用值的下拉式選單,讓使用者選取新的值。

您可以使用 Spinner
物件在版面配置中新增輪轉選單,通常應該要使用 <Spinner>
元素在 XML 版面配置中加入。例如:
<Spinner android:id="@+id/planets_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" />
如要在輪轉選單中加入選項清單,您必須在 Activity
或 Fragment
原始碼中指定 SpinnerAdapter
。
主要類別如下:
在輪轉選單中加入使用者選項
您為輪轉選單提供的選項可來自任何來源,但必須透過 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.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.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 was 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 was 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.spinner) spinner.onItemSelectedListener = this
Java
Spinner spinner = (Spinner) findViewById(R.id.spinner); spinner.setOnItemSelectedListener(this);
如要使用 Activity
或 Fragment
實作 AdapterView.OnItemSelectedListener
介面 (例如上方範例),您可以傳遞 this
做為介面例項。