2013/08/14

Android の AutoCompleteTextView で文字と背景が白くなってしまう

Android 2.3 以前では AutoCompleteTextView などドロップダウンメニューの文字色が白になってしまい見えなくなってしまうという不具合が時々発生します。

たとえば、以下のコードを実行すると、
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
AutoCompleteTextView mAutoCompleteTextView;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    mAutoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
 
    String[] list = new String[] {
            "alpha",
            "bravo",
            "charlie",
            "delta",
            "echo"
    };
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            this,
            android.R.layout.simple_dropdown_item_1line,
            list);
    mAutoCompleteTextView.setAdapter(adapter);
    mAutoCompleteTextView.setThreshold(1);
 
    mAutoCompleteTextView.setOnFocusChangeListener(new OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                mAutoCompleteTextView.showDropDown();
            }
        }
    });
}

以下のようになります。
ちゃんと候補は登録されていますので、タップすれば入力可能です。
文字色が白、かつバックグラウンドが白なため、候補が見えなくなっちゃってるんですね。

これ、バグというより、デザインが統一されていないために起きた不具合と言えそうです。

というわけで、以下のように ArrayAdapter のコンストラクタに与える引数を android.R.layout.select_dialog_item に変えるとうまくいきます。
1
2
3
4
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
        this,
        android.R.layout.select_dialog_item,
        list);


0 件のコメント: