Мне нужно изменить цвет фона вращателя панели инструментов . Я не могу сделать это обычным способом, потому что это не обычный тип Spinner, который вы просто перетаскиваете в свой макет. Я не писал этот код. Я редактирую его, но мне трудно.
Это код в основном макете. Этот метод вызывается среди нескольких фрагментов:
@Override
public void setToolbarSpinner(BarComponentAttributes bca) {
int grey3 = ContextCompat.getColor(this, R.color.grey3);
toolbar.setBackgroundColor(grey3);
RelativeLayout rl = toolbar.findViewById(R.id.mainToolbarActionButtonsContainer);
clearViewsInRl(rl);
rl.setBackgroundColor(grey3);
FragmentBarUtil.customSpinnerViewForBar(bca, rl);
}
Я нашел это решение ниже при переполнении стека и реализовал его в тестовом проекте, но у меня нет способа реализовать его в методе выше:
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list) {
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{
View v = null;
v = super.getDropDownView(position, null, parent);
// If this is the selected item position
if (position == selectedItem[0]) {
v.setBackgroundColor(Color.BLUE);
}
else {
// for other views
v.setBackgroundColor(Color.WHITE);
}
return v;
}
};
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedItem[0] = position;
Toast.makeText(MainActivity.this, ""+parent.getItemAtPosition(position), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});