[英]Text on spinner is white on a white background
微調框上的文字是白色的,我不知道為什么。
這是我的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);
它是固定的,盡管我不想使用“ this”
我也有同樣的問題,這是因為我的應用程序主題。 我通過替換
android.R.layout.simple_spinner_item
與
android.R.layout.simple_list_item_1
在我的ArrayAdapter
。 我希望這可以解決您的問題
在項目的布局文件夾中的simple_spinner_item.xml中,也許您有一個白色的android:textColor="@android:color/white"
屬性。
最好使用具有良好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"/>
我已經更改了微調框的textview的文本顏色,而沒有創建新的布局。 我知道已經很長時間了,但這對我有用,只是想分享一下。 最好的部分是您可以在任何默認適配器上使用它。
這是代碼:(這是Activity的,而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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.