Android ListView частично нажимаемые области - PullRequest
4 голосов
/ 17 января 2010

Я хотел бы создать макет элемента ListView, в котором я могу касаться определенных частей позиции. Это похоже на поведение в журнале контактов 2.0, в котором я могу нажать на зеленый логотип телефона, чтобы начать вызов, или нажать на сведения о входящем звонке, чтобы получить дополнительную информацию о контакте.

Мне не нужна реализация только для поведения. Я уже знаю, как связать OnClickListeners с частями позиций, где я хочу захватить прессу. Моя настоящая проблема заключается в том, что пользовательский интерфейс не реагирует должным образом в определенных случаях, когда пользователь нажимает на определенную область экрана. IE: если они щелкнули по зеленому значку телефона, при нажатии будет выделена только рамка вокруг телефона. Где при нажатии на имя будет выделена эта область.

Я посмотрел исходный код для приложения контактов, но он очень сложный, и я смог добиться некоторого успеха. У меня есть проблемы, когда исходный код ссылается на Drawables и ресурсы, которые не представлены в самом SDK.

Хотелось бы разумной реализации, которая не опирается на внутренний ресурс андроида. Или хотя бы несколько указателей в правильном направлении.

Я ищу решение, которое бы работало не только с нажатием, но и с 5-позиционной направленной клавиатурой.

Вот рисунок, который показывает, о чем я говорю.

Android Call Log
(источник: the-gadgeteer.com )

1 Ответ

3 голосов
/ 17 января 2010

Это просто выглядит как при настройке каждой строки списка в методе newView они устанавливают onClickListener для зеленого call_icon.При привязке вида телефонный номер добавляется к call_icon с помощью метода View.setTag().

Затем в обработчике onClick номер телефона извлекается ителефонный звонок Intent сработал.

Все остальные нажатия в строке списка обрабатываются обычным способом - метод onListItemClick.

...