Нечетная визуальная проблема с расположением элемента ListView с двумя нажимаемыми частями - PullRequest
2 голосов
/ 15 января 2011

Я хотел создать ListView, в котором элементы имеют две нажимные части, такие как макеты, которые отображаются в нескольких местах в стандартном приложении для телефона / контактов Android:

http://i55.tinypic.com/358s1lc.jpg image

У меня нормально работает макет, включая обработку событий от каждого фрагмента отдельно, за исключением визуальной проблемы, когда нажат меньший фрагмент.В моем приложении меньший фрагмент получает только небольшой эллипс для фона при нажатии, например:

image

Обратите внимание, что на самом деле это не мое приложение- это NubDial , но у моего приложения такая же проблема.Так как NubDial использует ту же XML-разметку, что и приложение для телефона, я не уверен, насколько уместны макеты элементов списка, но вот они:
NubDial: contacts_list_item.xml

Кто-нибудь знает, что там может происходить?

Ответы [ 3 ]

0 голосов
/ 15 января 2011

Вы можете сделать одну вещь. В макете строки представления списка вы можете разделить разделы как «основной контейнер», который содержит группу просмотра «левый контейнер» и «правый контейнер».

И установите «clickable = true» для левого и правого контейнера, и затем вы можете идентифицировать щелчки по его «id».

0 голосов
/ 19 января 2011

В макете использовался этот фон, который можно нарисовать для кнопки справа:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_window_focused="false"
        android:drawable="@android:color/transparent" />
    <item android:state_focused="false" android:state_pressed="true"
        android:drawable="@*android:drawable/list_selector_background_transition" />
    <item android:state_focused="false" android:state_pressed="false"
        android:drawable="@android:drawable/screen_background_dark"/>

</selector>

Копирование рисованного элемента list_selector_background_transition и его изображений в мой проект устранило проблему. Я подумал, что это довольно странно, и я хотел бы использовать систему, которую можно нарисовать, если возможно. Кто-нибудь знает, что происходит?

0 голосов
/ 15 января 2011

Хм.У меня нет способа проверить это прямо сейчас, но я думаю, у меня есть идея, что вам нужно сделать.Просматривая источник, для кнопки вызова Google использует пользовательский вид с именем DontPressWithParentImageView.По сути, он не устанавливает нажатое состояние, если вы нажимаете на родителя (значок телефона не выглядит нажатым, если вы фактически нажимаете на элемент контакта).

Я не могу найти фактический источник адаптера прямо сейчас, но вы должны обратить внимание на то, что в вашем ListAdapter в методе getView () дайте кнопку вызова (в данном случае ваш DontPressWithParentImageView)onClickListener (), который вызывает номеронабиратель с номером выбранного контакта.Между тем, ваш метод onListItemClick () для вашего ListView может обрабатывать альтернативное действие (т. Е. Вызывать контактные данные).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...