Как программно изменить цвет текста кнопки действия Android TV? - PullRequest
0 голосов
/ 15 марта 2019

val adapter = SparseArrayObjectAdapter()
    adapter.set(ACTION_PLAY_VIDEO, Action(ACTION_PLAY_VIDEO.toLong(), resources.getString(R.string.play_asset)))
    row.actionsAdapter = adapter

Вот мой код для действий в DetailPage AndroidTV Но я понятия не имею, как я могу изменить цвет текста кнопки / цвет фона кнопки программно, а не в xmls?

1 Ответ

0 голосов
/ 05 апреля 2019

Дайте вашему адаптеру предъявителя.

В Java:

adapter.setPresenterSelector(new ClassPresenterSelector()
    .addClassPresenter(Action.class, new Presenter() {

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_button_layout, parent, false);
            return new ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(ViewHolder viewHolder, Object item) {
            Button button = viewHolder.view.findViewById(R.id.my_button_id);
            //do stuff here, like
            button.setBackgroundColor(Color.BLUE);
            button.setTextColor(Color.RED);
            //or
            button.setOnFocusChangeListener((view, hasFocus) -> {
                if (hasFocus) {
                    //change color?
                }
            });
        }

        @Override
        public void onUnbindViewHolder(ViewHolder viewHolder) {
            //required override
        }

    })
);
...