Как изменить цвет шрифта Spinner?

У меня проблема с телефонами Droid X, где пользователи говорят, что цвет шрифта оказывается белым в spinner, делая его невидимым, если пользователи не выделяют элементы. У других телефонов, похоже, нет этой проблемы. Я собирался попытаться заставить шрифт быть черным, чтобы увидеть, помогает ли это. Как я могу это сделать?

Вот как я сейчас заполняю счетчик. Похоже, что simple_spinner_item разбит на Droid X's.

 String spin_arry[] = new String[str_vec.size()]; str_vec.copyInto(spin_arry); ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, spin_arry); 

Я собираюсь использовать образец проекта Spinner из Android SDK для следующих примеров кода.


Код :

Во-первых, вам нужно создать пользовательский адаптер, который перехватит создание представлений в выпадающем списке:

 static class CustomArrayAdapter<T> extends ArrayAdapter<T> { public CustomArrayAdapter(Context ctx, T [] objects) { super(ctx, android.R.layout.simple_spinner_item, objects); } //other constructors @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); //we know that simple_spinner_item has android.R.id.text1 TextView: /* if(isDroidX) {*/ TextView text = (TextView)view.findViewById(android.R.id.text1); text.setTextColor(Color.RED);//choose your color :) /*}*/ return view; } } 

Затем вы создаете адаптер в своем коде следующим образом:

  String [] spin_arry = getResources().getStringArray(R.array.Planets); this.mAdapter = new CustomArrayAdapter<CharSequence>(this, spin_arry); 

Объяснение:

Поскольку CustomArrayAdapter знает, что мы используем встроенный ресурс компоновки для Android, он также знает, что текст будет помещен в TextView с идентификатором android.R.id.text1 . Вот почему он может перехватывать создание представлений в выпадающем списке и менять цвет текста на любой цвет.


Скриншот:

Введите описание изображения здесь

Напишите R.layout.simplespinneritem:

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:singleLine="true" android:layout_width="match_parent" android:layout_height="wrap_content" /> 

Идентификатор – android:id="@android:id/text1" , установите цвет шрифта и фона.

 ArrayAdapter adapter = new ArrayAdapter(this,packagename.R.layout.simple_spinner_item, spin_arry); 

Простой и четкий …

 private OnItemSelectedListener OnCatSpinnerCL = new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { ((TextView) parent.getChildAt(0)).setTextColor(Color.BLUE); ((TextView) parent.getChildAt(0)).setTextSize(5); } public void onNothingSelected(AdapterView<?> parent) { } }; 
 public class ee extends Activity{ protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.ww); addListenerOnSpinnerItemSelection(); } public void addListenerOnSpinnerItemSelection(){ ArrayList<String> array = new ArrayList<String>(); array.add("item0"); Spinner spinner1; ArrayAdapter<String> mAdapter; spinner1= (Spinner) findViewById(R.id.spinner2); spinner1= new ArrayAdapter<String>(this, R.layout.spinner_item, array); spinner1.setAdapter(mAdapter); } } 

И в xml res / layout добавьте новый xml-файл: тип макета, прядильщик

(В spinner_item.xml)

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="top" android:singleLine="true" android:textColor="#00f0ff" /> 

Чтобы добавить к ответу сасада, сделайте копию этого файла, который вы можете найти в своей папке Android, в своем проекте, измените цвет текста TextView в этом файле и используйте этот макет при инициализации адаптера вместо андроида.

Создайте свой собственный XML-файл макета и дайте андроид: textColor = "# 000" для черного текста

Вот более подходящий способ, ребята,

Сначала найдите файл «simple_spinner_item.xml» в вашей системе, следуйте приведенному ниже пути, C: \ Users [имя_пользователя] \ AppData \ Local \ Android \ sdk \ platform [android-23] \ data \ res \ layout

Теперь скопируйте содержимое файла «simple_spinner_item.xml»

Во-вторых создайте файл custom_spinner.xml в папке res \ layout проекта

И вставьте скопированный контент в недавно созданный файл

Вот пример:

Рез \ расположение \ custom_spinner.xml

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

Вот код адаптера:

 Spinner ddlArea = (Spinner) findViewById(R.id.ddlArea); ddlArea.setAdapter(new ArrayAdapter<String>(this, R.layout.custom_spinner, areaList)); 

Где areaList – это список

Спасибо, Ejaz Waquif