Как установить цвет фона выбранного элемента в панели инструментов Spinner. Не нормальный счетчик - PullRequest
1 голос
/ 22 апреля 2020

Мне нужно изменить цвет фона вращателя панели инструментов . Я не могу сделать это обычным способом, потому что это не обычный тип 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) {

        }
    });
...