39

スピナーのテキストが白く、その理由がわかりません。

ここに画像の説明を入力

これは私のxmlで、特別なことは何もありません

 <Spinner
     android:id="@+id/spinner_date"
     android:layout_width="0dp"
     android:layout_height="wrap_content"
     android:layout_weight="1" />

そして私のコード

dateSpinner = (Spinner) findViewById(R.id.spinner_date);
selectedDate = calendar.getTime();
List<String> list = new ArrayList<String>();
list.add(formatter.format(selectedDate));
dateAdapter = new ArrayAdapter<String>(mContext,
            android.R.layout.simple_spinner_item, list);
dateSpinner.setAdapter(dateAdapter);

テキストが白く表示される理由は何ですか?

編集: 理由がわかりました。onCreate で設定された mContext パラメータを置き換えました。

mContext = getApplicationContext();

今私はdを使用します

ateAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, list);

そしてそれは動作します。

4

8 に答える 8

16

を使用してこの問題を解決しました

getBaseContext()

それ以外の

getApplicationContext()
于 2016-06-09T19:47:10.520 に答える
3

から変更します

new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, some_list);

新しいArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);

「これ」は使いたくありませんが、修正されました

于 2013-11-02T02:28:45.710 に答える
2

アプリケーションのテーマが原因で、同じ問題も発生しました。を置き換えることで解決しました

android.R.layout.simple_spinner_item

android.R.layout.simple_list_item_1

私の中でArrayAdapter。これで問題が解決することを願っています

于 2013-07-16T02:30:59.717 に答える
1

プロジェクトのレイアウトフォルダーにあるsimple_spinner_item.xmlに白のandroid:textColor="@android:color/white"属性がある可能性があります。

android:textColor="@android:color/COLOR_YOU_WANT_TO_USE"適切な属性を持つカスタム スピナー アイテム レイアウトを使用することをお勧めします。

于 2013-05-03T08:13:31.160 に答える
1

スピナーを簡単にスタイリングできます。でこれを使用しstyle.xmlます。

 <style name="SpinnerThemeLight" >
    <item name="android:colorBackground">@color/black</item>
    <item name="android:textColorPrimary">@color/black</item>
    <item name="android:textColorSecondary">@color/black</item>
    <item name="android:textColorTertiary">@color/black</item>
    <item name="android:textColorPrimaryDisableOnly">@color/black</item>
</style>

上記のxmlファイルではblack、時間のために色を付けただけです。好きな色を選んで遊んでみてください。

Spinnerで を次のように定義activity.xmlします。

 <android.support.v7.widget.AppCompatSpinner
   android:id="@+id/spinner"
   android:layout_width="wrap_content"
   android:layout_height="match_parent"
   android:entries="@array/countrys"
   android:spinnerMode="dropdown"
   android:theme="@style/SpinnerThemeLight"/>
于 2018-05-03T18:02:11.420 に答える
0

Spinner 用に独自の TextView を作成したと仮定します。

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="14sp"
    android:textColor="@color/white"
    android:padding="5dip"
    />

そのような呼び出しを介してアダプターに接着しました

String[] spinnerItems = getResources().getStringArray(R.array.my_array);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.spinner_text, spinnerItems);

これにより、ドロップダウン ビュー内のアイテムを含むスピナーの選択テキストが白く塗りつぶされます。これで、ドロップダウン ビューの背景がアプリのテーマの影響を受けるようになり、ほとんどの場合、白いテキストが白い背景に表示されます。このアンドロイドを回避するために、スピナー ドロップダウン ビューのリソースを設定できます。独自のビューを設定するか、単にデフォルトのドロップダウン ビューを使用することができます。これにより、呼び出しによってドロップダウン メニュー内のカスタム テキストビューが上書きされます。

 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

完全なコードは次のようになります

this.spinner = findViewById(R.id.spinnerView);
String[] spinnerItems = getResources().getStringArray(R.array.my_array);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.spinner_text, spinnerItems);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
this.spinner.setAdapter(adapter);
于 2019-01-31T10:30:08.160 に答える