Как изменить цвет шрифта Spinner?
У меня проблема с телефонами Droid X, где пользователи говорят, что цвет шрифта оказывается белым в spinner, делая его невидимым, если пользователи не выделяют элементы. У других телефонов, похоже, нет этой проблемы. Я собирался попытаться заставить шрифт быть черным, чтобы увидеть, помогает ли это. Как я могу это сделать?
Вот как я сейчас заполняю счетчик. Похоже, что simple_spinner_item
разбит на Droid X.
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);
Ответы
Ответ 1
Я собираюсь использовать образец проекта 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
с id android.R.id.text1
. Именно поэтому он может перехватывать создание представлений в выпадающем списке и изменять цвет текста на любой цвет.
Снимок экрана:
![enter image description here]()
Ответ 2
Простой и четкий...
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) {
}
};
Ответ 3
напишите a 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);
Ответ 4
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
(в 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" />
Ответ 5
Чтобы добавить к ответу sasad, сделайте копию этого файла, который вы можете найти в своей папке Android, в своем проекте, измените цвет текста TextView в этом файле и используйте этот макет при инициализации адаптера вместо Android.
Ответ 6
создайте свой собственный XML файл макета и дайте андроид: textColor = "# 000" для черного текста
Ответ 7
Вот более подходящий способ, ребята,
Сначала найдите файл "simple_spinner_item.xml" в вашей системе,
Следуйте приведенному ниже пути,
C:\Users [имя пользователя]\AppData\Local\Android\SDK\платформы [андроида-23]\данные\Рез\раскладка
Теперь скопируйте содержимое файла "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