Как изменить в Spinner цвет текста, фона. И форму опускающего списка в Android
Я читал на разных сайтах. Но так-как там реализовано у меня не получается. Ответ на вопрос может быть большим . Но если вы ответите подробно. Я буду вам ОЧЕНЬ Благодарен. Спасибо вам за то что помогаете новичкам разработчикам
Ответы (2 шт):
Автор решения: Circassian
→ Ссылка
Spinner spinner = findViewById(R.id.spinner);
List<String> list = new ArrayList<String>(){{
add("Пункт 1");
add("Пункт 2");
add("Пункт 3");
add("Пункт 4");
add("Пункт 5");
}};
CustomAdapter adapter = new CustomAdapter(this, R.layout.item_spinner_title, R.layout.item_spinner_dropdown, list);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.d("logs", "Выбран пункт " + list.get(position));
}
public void onNothingSelected(AdapterView<?> arg0) {}
});
Вот адаптер для спинера. Можешь передать в него свои вьюхи
public class CustomAdapter extends ArrayAdapter<String> {
private Context context;
private int mResource; // id вьюхи для свернутого списка
private int dropDownResource; // id вьюхи для выпадающего списка
private List<String> items;
public CustomAdapter(@NonNull Context context, int mResource, int dropDownResource, List<String> items) {
super(context, mResource, items);
this.context = context;
this.mResource = mResource;
this.dropDownResource = dropDownResource;
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = LayoutInflater.from(context).inflate(mResource, parent, false);
TextView tvTitle = view.findViewById(R.id.tvTitle);
tvTitle.setText(items.get(position));
//Здесь делаешь с tvTitle то что тебе нужно. Меняешь фон, цвет текста и т.д.
return view;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = LayoutInflater.from(context).inflate(dropDownResource, parent, false);
TextView tvTitle = view.findViewById(R.id.tvTitle);
tvTitle.setText(items.get(position));
//Здесь делаешь с tvTitle то что тебе нужно. Меняешь фон, цвет текста и т.д.
return view;
}
}
item_spinner_title
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tvTitle"
style="?android:attr/dropDownItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:padding="16dp"
android:textColor="@color/white"
android:ellipsize="marquee" />
item_spinner_dropdown
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tvTitle"
style="?android:attr/dropDownItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:padding="16dp"
android:textColor="@color/black"
android:ellipsize="marquee" />
Автор решения: Maks
→ Ссылка
Если ты новичок то возможно тебе будет проще взять готовую библиотеку и вперёд. Не надо придумывать то что уже есть. Например эта библиотека:
https://github.com/skydoves/PowerSpinner/blob/master/README.md