Android自定义ListView与ImageButton没有得到重点

Android自定义ListView与ImageButton没有得到重点

问题描述:

我正在开发一个android电视应用程序。我有一个listviewImageButton + Textview s作为孩子。由于电视不需要触摸事件,但使用D-PAD或轨迹球遥控器,我必须关注所有可点击的项目,以便用户知道焦点所在。但问题是,我可以专注于列表行,如果我的列表行中添加Android自定义ListView与ImageButton没有得到重点

android:descendantFocusability="blocksDescendants"

自定义列表行布局

ImageButton不会得到焦点。 如果我删除上面的代码,然后ImageButton获得焦点,但我不能单击列表行。

另外,我加了setItemsCanFocus为我的ListView但没有运气,没有什么改变。 我读了很多文件,但我找不到这个问题的正确答案。我想要关注列表行以及ImageButton。是否有可能,如果任何人知道,请帮我...

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

查看越来越挂断由于排文件中的多个视图,以获得点击你要多一个属性添加到您的行XML的主要布局。

android:descendantFocusability="blocksDescendants

但是,当我写上面的属性,则我不能够集中的ImageButton这是在我行的文件。

我只是试过一种方法获得ImageButton以及listview foucus。

要获得ImageButton的重点:

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

要获取列表视图的焦点:

  1. 行XML中添加android:descendantFocusability="blocksDescendants主布局。

现在,当你点击你的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> 

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

+0

我做了所有上述的事情,但它不适用于nexus 7模拟器以及电视。我认为它是因为没有电视触摸屏,所以android:focusableInTouchMode =“true”不起作用 – 2013-04-01 13:56:24

+0

它在nexus 7模拟器中工作也很好。 – RobinHood 2013-04-02 09:15:03

+0

重点是要列出行和按钮...? – 2013-04-02 09:18:43

您是否尝试过:

setFocusableInTouchMode(false); 

setFocusable(false); 

在这两个项目(所的ImageButton和TextView的)?

+0

感谢您的时间,但如果用户不能重点然后用遥控器用户不知道他是否在正确的ImageButton ... – 2013-03-07 07:19:30

我以前有同样的问题。我解决了我的问题(添加到xml中的布局)

android:focusableInTouchMode="true" 
android:clickable="true" 

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

注意:仅添加android:focusableInTouchMode =“true”不起作用,您必须在focusableInTouchMode为true后将布局可点击为true。

我在listView中有同样的问题,但我找到了解决方案,只需使用imageView而不是图像按钮,那么行也是可点击和可聚焦的。

注意:当我们使用listView中的按钮或图像按钮时,列表视图的行会被禁用以防止发生这种情况,请改用view或imageview。

希望所以这会帮助你。

+0

即使有所有建议的评论,我都无法让ImageButton工作,但是这很有效。 – bcorso 2014-11-06 19:01:17

添加下面的代码,自定义行的父布局,

android:descendantFocusability="blocksDescendants" 

和下面的代码在布局添加到任何按钮或ImageButton的

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