Подтвердить что ты не робот

Текст на прядильщике белый на белом фоне

Текст на моих прядильщиках белый, и я понятия не имею, почему.

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);

и он работает.

4b9b3361

Ответ 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
        }
    }