Текст на прядильщике белый на белом фоне
Текст на моих прядильщиках белый, и я понятия не имею, почему.
![enter image description here]()
Это мой 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);
Что может быть причиной того, что мой текст отображается в белом?
EDIT:
Я нашел причину, я заменил параметр mContext, который был установлен в моем onCreate.
mContext = getApplicationContext();
Теперь я использую d
ateAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, list);
и он работает.
Ответы
Ответ 1
У меня такая же проблема и нашел ответ. Вместо этого вы используете контекст приложения, просто используйте getActivity()
(если вы находитесь в фрагменте) или это (если вы находитесь в действии), он будет работать
dateAdapter = new ArrayAdapter<String>(**this**,
android.R.layout.simple_spinner_item, list);
Ответ 2
Я решил эту проблему, используя
getBaseContext()
вместо
getApplicationContext()
Ответ 3
У меня также была такая же проблема, из-за моей темы приложения. Что я решил, заменив
android.R.layout.simple_spinner_item
с
android.R.layout.simple_list_item_1
в моем ArrayAdapter
. Я надеюсь, что это может решить вашу проблему.
Ответ 4
меняет его из
new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, some_list);
в
новый ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
он исправлен, хотя я не хочу использовать "this"
Ответ 5
Возможно, у вас есть белый android:textColor="@android:color/white"
атрибут в simple_spinner_item.xml в папке макета вашего проекта.
Лучше использовать настраиваемый макет элемента spinner с хорошим атрибутом android:textColor="@android:color/COLOR_YOU_WANT_TO_USE"
.
Ответ 6
Вы можете легко оформить Spinner. Используйте это в 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
в 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"/>
Ответ 7
Я предполагаю, что вы создали свой собственный TextView для вашего Spinner, например
<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);
Ответ 8
Я изменил цвет текста этого текстового представления, не создавая новый макет. Я знаю, что это было давно, но это то, что сработало для меня, просто подумал поделиться этим. Самое приятное, что вы можете использовать его на любом адаптере по умолчанию.
Вот код: (это для Activity & requireActivity для фрагментов)
1) Ява
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
}
}