Android自定义ListView与ImageButton没有得到重点
我正在开发一个android电视应用程序。我有一个listview
与ImageButton
+ Textview
s作为孩子。由于电视不需要触摸事件,但使用D-PAD或轨迹球遥控器,我必须关注所有可点击的项目,以便用户知道焦点所在。但问题是,我可以专注于列表行,如果我的列表行中添加Android自定义ListView与ImageButton没有得到重点
android:descendantFocusability="blocksDescendants"
但ImageButton
不会得到焦点。 如果我删除上面的代码,然后ImageButton
获得焦点,但我不能单击列表行。
另外,我加了setItemsCanFocus
为我的ListView
但没有运气,没有什么改变。 我读了很多文件,但我找不到这个问题的正确答案。我想要关注列表行以及ImageButton
。是否有可能,如果任何人知道,请帮我...
我必须关注所有可点击的项目,以便用户知道焦点在哪里。但问题是,我可以专注于列表行,如果我添加
查看越来越挂断由于排文件中的多个视图,以获得点击你要多一个属性添加到您的行XML的主要布局。
android:descendantFocusability="blocksDescendants
但是,当我写上面的属性,则我不能够集中的ImageButton这是在我行的文件。
我只是试过一种方法获得ImageButton
以及listview
foucus。
要获得ImageButton的重点:
- 创建一个选择文件。
- 应用于Imagebutton。
- 向ImageButton添加了
android:focusableInTouchMode="true"
。
要获取列表视图的焦点:
- 行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模拟器测试,效果很好。
您是否尝试过:
setFocusableInTouchMode(false);
或
setFocusable(false);
在这两个项目(所的ImageButton和TextView的)?
感谢您的时间,但如果用户不能重点然后用遥控器用户不知道他是否在正确的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。
希望所以这会帮助你。
即使有所有建议的评论,我都无法让ImageButton工作,但是这很有效。 – bcorso 2014-11-06 19:01:17
添加下面的代码,自定义行的父布局,
android:descendantFocusability="blocksDescendants"
和下面的代码在布局添加到任何按钮或ImageButton的
android:focusable="false"
android:focusableInTouchMode="false"
我做了所有上述的事情,但它不适用于nexus 7模拟器以及电视。我认为它是因为没有电视触摸屏,所以android:focusableInTouchMode =“true”不起作用 – 2013-04-01 13:56:24
它在nexus 7模拟器中工作也很好。 – RobinHood 2013-04-02 09:15:03
重点是要列出行和按钮...? – 2013-04-02 09:18:43