俺言語。

自分にしか理解できない言語で書かれた備忘録

【Android】【Spinner】プルダウンで項目を選択できるSpinner

ボタンをクリックするとアイテムのリストがプルダウンで表示されて、そこから項目を選ぶタイプのUI実装方法。
かなりわかりづらい。

シェイプ等を変えず背景色とフォント色のみ設定する場合に必要になるファイルは

  1. ***.java : SpinnerインスタンスとSpinnerアイテムを格納するためのArrayAdapterインスタンスを作成、SpinnerにArrayAdapterをセットする。

Itemが選択されたときに呼ばれるリスナーをセットする。

  1. spinner_item.xml(layout) : ボタン上に表示される部分の定義
  2. spinner_dropdown/xml(layout) : ドロップダウンで表示される部分の定義


各ファイルのコード

/** Spinnerの準備 */
        ArrayAdapter<String> adapter_mode = new ArrayAdapter<String>(this, R.layout._cutom_spinner_item);
        adapter_mode.setDropDownViewResource(R.layout._custom_spinner_dropdown);
        adapter_mode.add("1.***");
        adapter_mode.add("2.***");
        adapter_mode.add("3.***");
        final Spinner spinner_mode = (Spinner) findViewById(R.id.spinner_mode);
        spinner_mode.setAdapter(adapter_mode);
        // リスナーを登録
        spinner_mode.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                Spinner spinner = (Spinner)adapterView;
                Spinner_Item = (String)spinner.getSelectedItem();
                // Itemが選択されたときに実行するmethod
                sendModeSig();
            }
            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
            }
        });
  • _custom_spinner_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android        ="http://schemas.android.com/apk/res/android"
    style                ="?android:attr/spinnerItemStyle"
    android:singleLine   ="true"
    android:layout_width ="fill_parent"
    android:layout_height="fill_parent"
    android:textColor    ="@android:color/white"
    android:backgroundTint="@android:color/white"
    android:gravity      ="center"
    android:ellipsize    ="marquee"
    android:textAppearance="@style/TextAppearance.AppCompat.Large"
    />
  • _custom_spinner_dropdown.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android        ="http://schemas.android.com/apk/res/android"
    style                ="?android:attr/spinnerItemStyle"
    android:singleLine   ="true"
    android:layout_width ="fill_parent"
    android:layout_height="fill_parent"
    android:textColor    ="@android:color/white"
    android:backgroundTint="@android:color/white"
    android:gravity      ="center"
    android:ellipsize    ="marquee"
    android:textAppearance="@style/TextAppearance.AppCompat.Large"
    />

こちらが大変参考になりました。感謝。

k-hiura.cocolog-nifty.com