【Android開発】ドロップダウンリストの文字サイズを変更したい

通常、スピナークラスを使い、ドロップダウンリストを配置すると以下のような画面になる。

%e3%82%b9%e3%83%94%e3%83%8a%e3%83%bc_%e5%b0%8f%e3%82%b9%e3%83%94%e3%83%8a%e3%83%bc%e3%82%a2%e3%82%a4%e3%83%86%e3%83%a0_%e5%b0%8f

 

 

 

 

 

 

 

 

 

そうです、ドロップダウンリスト内の文字サイズが小さいのです。これは、Android標準のスピナーを使用すると文字サイズが固定されてしまうからです。スピナー内にtextsizeを指定しても、文字サイズは変更できません。今回は、このドロップダウンリスト内の文字サイズをどうやって変更するかについてふれたいと思います。


  1. スピナーを配置
  2. 独自のスピナーを作成
  3. スピナー内のアイテムを定義
  4. 作成したスピナーを動的にセット

1.スピナーを配置

下記コードはドロップダウンリストのみを設置しています。ドロップダウンリスト内のアイテムについては別ファイルで追加します。

【main_activity.xml】

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/activity_vertical_margin"
    tools:context="com.example.User.spinnertest.MainActivity">
    <Spinner
        android:id="@+id/Spinner"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />
</RelativeLayout>

2.独自のスピナーを作成

下記二つのコードはandroid標準のスピナーである「simple_spinner_item.xml」と「simple_spinner_dropdown_item.xml」の代わりに独自のスピナーを作成しました

【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:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="24sp"
    android:ellipsize="marquee"/>

【spinner_dropdown_item.xml】

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    style="?android:attr/spinnerItemStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="24sp" />

3.スピナー内のアイテムを定義

下記コードはドロップダウンリスト内のアイテムを作成しています

【strings.xml】

<resources>
    <string name="app_name">Spinner Test</string>
    <string-array name="sample_array">
        <item>Japanese</item>
        <item>English</item>
    </string-array>
</resources>

4.作成したスピナーを動的にセット

下記コードは上記1~3で作成したスピナーを動的にセットしています

【MainActivity.java】

package com.example.User.spinnertest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class MainActivity extends Activity {

    private Spinner selectSpinner;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.title);

        // android.R.Layout.simple_spinner_itemをR.layout.spinner_itemに変更
        ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.sample_array, R.layout.spinner_item);

        // android.R.Layout.simple_spinner_dropdown_itemをR.layout.spinner_dropdown_itemに変更
        adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);

        selectSpinner = (Spinner) findViewById(R.id.Spinner);
        selectSpinner.setAdapter(adapter);
        selectSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                // ここにスピナー内のアイテムを選択した際の処理を書く
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                // スピナーでは使用しないようですが、ないといけないのでこのまま放置
            }
        });
    }
}

ドロップダウンリスト内の文字サイズを変更することができました。
%e3%82%b9%e3%83%94%e3%83%8a%e3%83%bc_%e5%a4%a7%e3%82%b9%e3%83%94%e3%83%8a%e3%83%bc%e3%82%a2%e3%82%a4%e3%83%86%e3%83%a0_%e5%a4%a7