AndroidのSpinnerでフォントの色を設定する方法

AndroidでSpinnerの文字色を設定するには、SpinnerのレイアウトのカスタマイズとカスタムArrayAdapterの実装が必要。

まず、res/layoutフォルダ内に「spinner_item.xml」という名前のレイアウトファイルを作成し、Spinnerに表示する各選択肢のスタイルを定義する。そのレイアウトファイルの中で、選択肢のテキストを表示するためのTextViewを追加し、TextViewのフォントの色を設定する。

「spinner_item.xml」ファィルの内容は次のとおりです。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/spinner_text_color" />

</LinearLayout>

スピナーのデータとスタイルを設定するには ArrayAdapter を継承したカスタムアダプタークラスをコード内に作成します。そのアダプター内で getView メソッドをオーバーライドして、フォントカラーなどオプションのスタイルをカスタマイズします。

ネイティブにカスタマイズされたアダプタスクラスのコードは次のとおりです。

public class CustomSpinnerAdapter extends ArrayAdapter<String> {

    private Context context;
    private String[] items;

    public CustomSpinnerAdapter(Context context, int resource, String[] items) {
        super(context, resource, items);
        this.context = context;
        this.items = items;
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        if(convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.spinner_item, parent, false);
        }

        TextView textView = convertView.findViewById(R.id.text_view);
        textView.setText(items[position]);
        textView.setTextColor(ContextCompat.getColor(context, R.color.spinner_text_color));

        return convertView;
    }

}

最後にスピナーをアクティビティで使ったときに、Spinnerに対してカスタムアダプターを設定します。

以下のコードをご覧ください。

Spinner spinner = findViewById(R.id.spinner);

String[] items = {"Item 1", "Item 2", "Item 3"};

CustomSpinnerAdapter adapter = new CustomSpinnerAdapter(this, R.layout.spinner_item, items);
spinner.setAdapter(adapter);

上記のコードでは、「R.id.spinner」はSpinnerのIDであり、実際の状況に応じて置き換える必要があります。

res/values フォルダにフォントカラー値の定義を追加する “colors.xml” ファイルを作成します。

<resources>
    <color name="spinner_text_color">#FF0000</color>
</resources>

上記のコードで、”#FF0000″ は色の値の例です。必要に応じて、実際のニーズに合わせて置き換えてください。

bannerAds