Подтвердить что ты не робот

Пользовательский ListView для Android с ImageButton не получает фокус

Я разрабатываю приложение для Android-ТВ. У меня есть listview с ImageButton + Textview как дети. Поскольку телевизор не принимает события касания, а использует удаленный D-PAD или трекбол, я должен сосредоточиться на всех кликабельных элементах, чтобы пользователь знал, где находится фокус. Но проблема в том, что я могу сосредоточиться на строке списка, если добавить

android:descendantFocusability="blocksDescendants"

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

Также я добавил setItemsCanFocus для моего listview, но не повезло, ничего не изменилось. Я прочитал много документов, но я не мог найти правильный ответ на эту проблему. Я хочу сосредоточиться как на строке списка, так и на ImageButton. Возможно ли, если кто-нибудь знает, пожалуйста, помогите мне...

4b9b3361

Ответ 1

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

Просмотр получения зависания из-за нескольких просмотров внутри файла строки, чтобы получить щелчок. Вам нужно добавить еще одно свойство в ваш основной макет строки xml.

android:descendantFocusability="blocksDescendants

Но когда я пишу выше свойство, я не могу сфокусировать ImageButton, который находится в файле строки.

Я просто попробовал один способ добиться, чтобы получить foucus на ImageButton, а также на listview.

Чтобы сосредоточиться на ImageButton:

  • Создайте один файл селектора.
  • Применяется в Imagebutton.
  • Добавлен android:focusableInTouchMode="true" в ImageButton.

Чтобы сосредоточиться на Listview:

  • Добавьте android:descendantFocusability="blocksDescendants в основной макет внутри строки xml.

Теперь, когда вы нажимаете на свой ImageButton, он будет фокусироваться на вашем желательном цвете, даже если он будет сфокусирован на щелчке списка.

Selecotor.xml

<?xml version="1.0" encoding="utf-8"?>
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <item 
        android:state_pressed="true"
        android:drawable="@android:color/transparent" 
        /> <!-- pressed -->    
    <item 
        android:state_focused="true"
        android:drawable="@android:color/darker_gray" 
        /> <!-- focused -->    
    <item 
        android:drawable="@android:drawable/btn_star" 
        /> <!-- default -->
</selector>

Протестировано в эмуляторе S3, хорошо работает.

Ответ 2

Раньше у меня была такая же проблема. Я решил проблему с добавлением (в макет в xml)
android:focusableInTouchMode="true"
android:clickable="true"

Итак, моя проблема была решена.

Примечание: добавление только андроида: focusableInTouchMode = "true" не работает, вам нужно сделать макет щелчком true, после focusableInTouchMode true.

Ответ 3

У меня была такая же проблема в listView, но я нашел решение, просто используйте imageView вместо кнопки изображения, затем строка будет доступна для кликов и фокусировки.

ПРИМЕЧАНИЕ. Когда мы используем кнопку button или imagebutton в listView, строка списка выглядит отключенной, чтобы это не приводило к необходимости использования представления или изображения.
Надеюсь, это поможет вам.

Ответ 4

Добавьте ниже код в родительский макет пользовательской строки,

android:descendantFocusability="blocksDescendants"

и добавьте ниже код к любой кнопке или ImageButton в этом макете

android:focusable="false"
android:focusableInTouchMode="false"

Ответ 5

Вы пробовали:

setFocusableInTouchMode(false);

или

setFocusable(false);

На обоих элементах (ImageButton и TextView)?