Android Изменить цвет текста Spinner (отображаемый текст – нет элементов в spinner)

За исключением одного экрана, Spinner должен иметь «черный» текст. Для одного экрана требуется, чтобы Spinner имел «белый» цвет (оба отображали текст для выбранного элемента и элементов прядильника).

Вот изображение для лучшей ясности. Верхнее изображение - это то, как оно отображается в черном цвете, а нижнее - изображение элементов с прямыми элементами с белым цветом текста

Я могу получить «белый» цвет для элементов-счетчиков, но не для выбранного отображаемого текста. Опять же, я не хочу глобально менять стиль – только этот экран. Это возможно?

 public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { int index = adapterView.getSelectedItemPosition(); ((TextView) spinner.getSelectedView()).setTextColor(getResources().getColor(R.color.white)); } 

Когда вы создаете Spinner, вы должны предоставить ему адаптер. Если вы использовали стандартную реализацию от разработчиков Android,

  Spinner spinner = (Spinner) findViewById(R.id.spinner); // Create an ArrayAdapter using the string array and a default spinner layout ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item); 

Чем вы можете сделать, так это создать свой собственный макет, который для представления выбранного текста элемента, который предоставляется как и помещенный внутри адаптера, и там вы можете предоставить атрибут textColor, что-то вроде этого:

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerItemStyle" android:singleLine="true" android:textColor="@color/primary_blue" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="marquee" android:textAlignment="inherit"/> 

Если вы используете ArrayAdapter.createFromResource() , не забывайте иметь TextView с android:id="@android:id/text1" чтобы этот адаптер мог привязывать данные к вашему макету.

Intereting Posts