iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0

在 Android 中,Spinner 是一種用來顯示下拉選單的 UI 元件,當使用者點擊它時,會展開一個選項清單供選擇。適用於要讓使用者從多個選項中選一個的情境,Spinner 適合用來取代 RadioButton 或單選 Dialog,在選項數量較多或畫面空間有限時特別實用。

Spinner 有兩種顯示模式:第一種是下拉式(dropdown),第二種是對話式(dialog)。

我們可以透過 android:spinnerMode="..." 屬性來指定顯示模式。
這篇主要介紹「下拉式(dropdown)」的 Spinner,關於對話式的 Spinner 之後會在 Dialog 相關文章中介紹

activity_main
Spinner的元件設定跟其他元件差不多,一樣直接拉取即可

<Spinner
    android:id="@+id/spinner"
    android:layout_width="0dp"
    android:layout_height="100dp"/>

MainActivity
首先建立一組字串陣列來作為下拉選單的選項,排列順序就是到時候顯示出來的順序

final String[] str={"第一項","第二項","第三項","第四項","第五項"};

接著建立ArrayAdapter,設定Spinner的項目樣式,而setDropDownViewResource設定的是Spinner的下拉選單樣式,因為沒有特別要求所以都是設置成預設的,如果有想要調整也可以自訂樣式再套用,建立ArrayAdapter後就能透過setAdapter來設定Spinner 的資料來源,這樣,我們的程式碼就寫好啦~

ArrayAdapter<String> strList = new ArrayAdapter<>(
    MainActivity.this,
    android.R.layout.simple_spinner_item, // 注意:此為 Spinner 預設項目的樣式
    str
);

spinner.setAdapter(strList);// 設定 Spinner 的資料來源為strList

// 設定下拉選單列表項目的顯示樣式
strList.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

然後我們來設定 Spinner 的選項變更監聽器,可以分別設定被選取和沒被選取時觸發的事件,那我這邊是設置被選擇後就透過Toast來在底部提示使用者選擇的選項

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    
    @Override// 被選取時的動作
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // 用 Toast 顯示目前選擇的項目文字
        Toast.makeText(MainActivity.this,"您選擇了"+
                spinner.getSelectedItem().toString(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // 沒有被選取時的動作
    }
});

完整程式碼:

//記得在最上方加上import
import android.widget.ArrayAdapter;// 用來設定 Spinner 的資料來源
import android.widget.Spinner;// 下拉選單元件

// 建立一組字串陣列,作為下拉選單項目
final String[] str={"第一項","第二項","第三項","第四項","第五項"};

// 建立 ArrayAdapter,連結字串陣列與 Spinner
ArrayAdapter<String> strList = new ArrayAdapter<>(
    MainActivity.this,
    android.R.layout.simple_spinner_item, // 注意:此為 Spinner 預設項目的樣式
    str
);

spinner.setAdapter(strList);// 設定 Spinner 的資料來源為strList

// 設定下拉選單列表項目的顯示樣式
strList.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

// 設定 Spinner 的選項變更監聽器
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    
    @Override// 被選取時的動作
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // 用 Toast 顯示目前選擇的項目文字
        Toast.makeText(MainActivity.this,"您選擇了"+
                spinner.getSelectedItem().toString(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // 沒有被選取時的動作
    }
});

執行成果展示:
image alt


上一篇
Day 09.Toast
下一篇
Day 11.HashMap
系列文
Android 新手的 30 天進化論:從初學者到小專案開發者12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言