Как вызвать селекторы из вида компоновки?


Задача

Предположим, что у вас есть вид внутри вида макета, и вы хотите, чтобы каждое событие касания на макете влияло на селектор фона вида.

Например , при касании макета селектор вида выберет состояние state_pressed.

Что я пробовал

Я читал о duplicateParentState и addStatesFromChildren, но я думаю, что это противоположно тому, что я ищу.

Я также пытался использовать события раскола, но это не помогло.

Вопрос

Как вы это делаете?

Кроме того, что следует делать, если макет находится внутри listView (как элемент внутри него) ?

1 2

1 ответ:

Рассмотрим, что у вас есть прядильщик внутри линейной компоновки. Сделать фокус свойств зрения(вот это спиннер) в false. А onClick линейной компоновки вызовет performClick on view (spinner в данном случае).

Правка:

В Прослушивателе изменения фокуса линейной компоновки, если он имеет фокус, вызовите requestFocus on view. Вы можете следовать тому же методу для других состояний зрения

Другой метод:

Не применяйте никакого селектора к макету (linearlayout в этом случае) и добавьте любой селектор, который вы хотите посмотреть (спиннер в данном случае). Для вида добавьте этот параметр

android:duplicateParentState="true"