Делегирование сенсорных событий - PullRequest
1 голос
/ 14 декабря 2010

давайте предположим, что у меня есть LinearLayout, горизонтальный, который содержит TextView, а затем Spinner или другой интерактивный TextView или EditText.

Я хочу, чтобы щелчок по любой части строки (если макет имеет отступы, а также область макета!) Приведет к удалению onTouchEvent в правой части макета (EditText, TextView или Spinner), как если бы они были щелкнули сами.

Выполнение этого самостоятельно потребует от меня либо создания собственных версий этих виджетов (слишком много работы для небольшого эффекта :-(), либо наложения слушателей на многие элементы для сенсорных событий и делегирования их. Я почти уверен, что в Android есть некоторые методы или свойства, чтобы сделать это, просто пока не видел.

Кто-нибудь может помочь?

1 Ответ

1 голос
/ 14 декабря 2010

Некоторое время назад мне пришлось сделать нечто похожее на это, и в итоге я написал свой собственный делегат и назначил для него все компоненты в моем макете. Это громоздко, но не слишком болезненно для реализации, и получилось хорошо.

Суть в том, что в API я ничего не видел, чтобы справиться с такими вещами. Единственное, что я могу предложить, это то, что, безусловно, можно назначить компоненту onclicklistener и просто отправить событие на компонент onclicklistener другого компонента, например:

thislinearlayout.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        getOtherComponent().performClick();
    }
});

Вы можете сделать то же самое с сенсорными слушателями.

...