Как задать разные цвета для подсказки и выбранного значения для spinner?
У меня есть выпадающий список (spinner) и мене нужно сделать так, чтобы подсказка была серой, а когда я выберу какой-то вариант из списка, текст в ячейке ставал черным. У меня получается или всё чёрное или всё серое.
Я использую вот такой код для заполнения списка и осуществления подсказки:
Spinner month = findViewById(R.id.month);
String[] plants = new String[]{
"Month",
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
};
final List<String> plantsList = new ArrayList<>(Arrays.asList(plants));
final ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
this, R.layout.spinner_, plantsList) {
@Override
public boolean isEnabled(int position) {
if (position == 0) return false;
else return true;
}
@Override
public void setDropDownViewResource(int position) {
if (position == 0) return false;
else return true;
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
TextView tv = (TextView) view;
if (position == 0) tv.setTextColor(Color.GRAY);
else tv.setTextColor(Color.BLACK);
return view;
}
};
spinnerArrayAdapter.setDropDownViewResource(R.layout.spinner_);
month.setAdapter(spinnerArrayAdapter);
Ответы (1 шт):
Автор решения: Svetlana Rozhkova
→ Ссылка
Вот так у меня получилось (цвет подсказки меняется в методе getView):
val spinnerAdapter = object : ArrayAdapter<String>(this, R.layout.spinner_white_item, items) {
override fun isEnabled(position: Int): Boolean {
// Disable the first item from Spinner
// First item will be used for hint
return position != 0
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val view = super.getView(position, convertView, parent)
if (view is TextView && position == 0) {
view.setTextColor(resources.getColor(R.color.gray))
}
return view
}
override fun getDropDownView(
position: Int,
convertView: View?,
parent: ViewGroup
): View {
val view: TextView = super.getDropDownView(position, convertView, parent) as TextView
//set the color of first item in the drop down list to gray
if(position == 0) {
view.setTextColor(Color.GRAY)
} else {
//here it is possible to define color for other items by
//view.setTextColor(Color.RED)
}
return view
}
}
R.layout.spinner_white_item:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingStart="@dimen/default_margin_triple"
android:paddingTop="@dimen/default_margin"
android:paddingEnd="@dimen/default_margin"
android:paddingBottom="@dimen/default_margin"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/text_size_mega"
tools:text="Please select the item" />
