使用ImageButton的Android自定义ListView没有获得焦点

nid*_*iga 17 android focus imagebutton android-listview

我正在为Android TV开发一个应用程序.我有一个listviewImageButton+ TextviewS作为孩子.由于电视不接受触摸事件但使用D-PAD或轨迹球遥控器,我必须关注所有可点击的项目,以便用户知道焦点在哪里.但问题是,如果我添加,我可以专注于列表行

android:descendantFocusability="blocksDescendants"

在自定义列表行布局中但ImageButton在列表行中将无法获得焦点.如果我删除上面的代码然后ImageButton获得焦点但我不能单击列表行.

此外,我增加setItemsCanFocus了我ListView,但没有运气,没有什么改变.我读了很多文件,但我找不到这个问题的正确答案.我希望专注于List行以及ImageButton.是否有可能,如果有人知道请帮帮我...

Rob*_*ood 21

我必须关注所有可点击的项目,以便用户知道焦点在哪里.但问题是,如果我添加,我可以专注于列表行

由于行文件中的多个视图而导致查看挂起,以获得单击您必须向行xml的主布局添加一个属性.

android:descendantFocusability="blocksDescendants

但是当我写上面的属性时,我无法关注我的行文件中的ImageButton.

我只是想一个办法acheive获得的foucus ImageButton以及对listview.

要专注于ImageButton:

  1. 创建一个选择器文件.
  2. 应用于Imagebutton.
  3. 添加android:focusableInTouchMode="true"到ImageButton.

要关注Listview:

  1. 添加android:descendantFocusability="blocksDescendants到行xml中的main-layout.

现在当你点击你的ImageButton时,它会聚焦你想要的颜色,即使它也会专注于listview点击.

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>
Run Code Online (Sandbox Code Playgroud)

在S3模拟器中测试,效果很好.


sns*_*sns 6

我之前遇到过同样的问题.我通过添加(解决xml中的布局)解决了我的问题

android:focusableInTouchMode="true"
android:clickable="true"
Run Code Online (Sandbox Code Playgroud)

所以我的问题得到了解决.

注意:仅添加android:focusableInTouchMode ="true"不起作用,必须在focusableInTouchMode为true后使布局可单击为true.