Как изменить цвет для выбранного номера во включенном NumberPicker в Android

Я хочу добиться этого эффекта на MyNumberPicker

до сих пор я реализовал класс NumberPicker и изменил несколько свойств, но интересная часть здесь:

public class NumberPicker extends android.widget.NumberPicker{

    public NumberPicker(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void addView(View child) {
        super.addView(child);
        updateView(child);
    }

    @Override
    public void addView(View child, int index, android.view.ViewGroup.LayoutParams params) {
        super.addView(child, index, params);
        updateView(child);
    }

    @Override
    public void addView(View child, android.view.ViewGroup.LayoutParams params) {
        super.addView(child, params);
        updateView(child);
    }

    private void updateView(View view) {
        if(view instanceof EditText){
            ((EditText) view).setTextSize(getResources().getDimension(R.dimen.numberpicker_text_size));
           ((EditText) view).setTextColor(ContextCompat.getColor(getContext(), R.color.colorPrimaryDark));

        }
    }

но эффект, который я получаю, таков:

Я получаю весь текст синим цветом (выделенный, не выбранный, активный, неактивный), как получить этот синий только при включенном NumberPicker и выбранном значении?

Спасибо за поддержку

1 ответ

Решение

Создать ColorStateList с вашими желаемыми атрибутами. Затем примените их к EditText

final ColorStateList colors = new ColorStateList(
                new int[][]{
                        new int[]{android.R.attr.state_selected},
                        new int[]{-android.R.attr.state_selected}
                },
                new int[]{selectedColorCode, defaultColor}
        );

((EditText) view).setTextColor(colors);
Другие вопросы по тегам