私のスピナーのテキストは白で、その理由はわかりません。
これは私の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);
そしてそれは動作します。
私は同じ問題を抱えており、答えを見つけました。アプリケーションコンテキストは使用せず、代わりにgetActivity()
(フラグメントにいる場合)またはthis(アクティビティにいる場合)を使用するだけで機能します
dateAdapter = new ArrayAdapter<String>(**this**,
Android.R.layout.simple_spinner_item, list);
私はこの問題を解決しました
getBaseContext()
の代わりに
getApplicationContext()
私はそれを変更します
_new ArrayAdapter<String>(getApplicationContext(), Android.R.layout.simple_spinner_item, some_list);
_
新しいArrayAdapter<String>(this, Android.R.layout.simple_spinner_item, list);
へ
「これ」は使いたくありませんが、修正されています
また、アプリケーションのテーマが原因で同じ問題が発生しました。私が交換して解決した
Android.R.layout.simple_spinner_item
と
Android.R.layout.simple_list_item_1
ArrayAdapter
で。これで問題が解決することを願っています
たぶん、あなたは白いAndroid:textColor="@Android:color/white"
属性(プロジェクトのlayoutフォルダー内のsimple_spinner_item.xml)。
適切なAndroid:textColor="@Android:color/COLOR_YOU_WANT_TO_USE"
属性。
スピナーのスタイルを簡単に設定できます。 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
色を指定しています。それで遊んで、お好みの色を整理してください。
activity.xml
のSpinner
を次のように定義します。
<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"/>
新しいレイアウトを作成せずに、スピナーのテキストビューのテキストの色を変更しました。私はそれが長い時間だったことを知っていますが、それは私のために働いたものです、ちょうどそれを共有することを考えました。最良の部分は、デフォルトのアダプターで使用できることです。
コードは次のとおりです(アクティビティの場合はこれ、フラグメントの場合はrequireActivity)
1)Java
arrayAdapter = new ArrayAdapter<String>(this,Android.R.layout.simple_list_item_1,groups){
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView listItem = view.findViewById(Android.R.id.text1);
listItem.setTextColor(Color.WHITE);
listItem.setTextSize(20);
listItem.setElevation(18);
return view;
}
};
2)コトリン
arrayAdapter = object : ArrayAdapter<String>(requireActivity(), Android.R.layout.simple_spinner_item, spinnerCategoriesList) {
override fun getView(position: Int, @Nullable convertView: View?, parent: ViewGroup): View {
val view = super.getView(position, convertView, parent)
val listItem = view.findViewById<TextView>(Android.R.id.text1)
listItem.setTextColor(Color.BLACK)
listItem.textSize = 16f
return view
}
}
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);
これにより、ドロップダウンビュー内のアイテムを含むスピナーの選択テキストが白く塗られます。これで、ドロップダウンビューの背景はアプリのテーマの影響を受け、ほとんどの場合、白いテキストが白い背景にレンダリングされます。これを避けるには、Androidを使用すると、スピナードロップダウンビューのリソースを設定できます。独自のビューを設定するか、ドロップダウン内のカスタムテキストビューを上書きするデフォルトのドロップダウンビューを使用できます。通話中のメニュー
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);