focusable和focusableInTouchMode之间的区别?

Xar*_*mer 72 android focus focusable

我想知道它们之间的实际区别......每个应该何时使用,每个应该如何使用,以及哪些情况都有用?

举几个例子并详细解释.

Apf*_*aft 65

Android开发者博客中对此进行了解释:http://android-developers.blogspot.co.at/2008/12/touch-mode.html

以下引用应该清楚说明:

触摸模式本身非常容易理解,因为它只是指示最后一次用户交互是否是用触摸屏执行的.例如,如果您使用G1手机,选择带轨迹球的小部件将使您退出触摸模式;

...

在触摸模式下,没有焦点也没有选择.用户进入触摸模式后,网格列表中的任何选定项目都将被取消选中.类似地,当用户进入触摸模式时,任何聚焦的小部件都变得不聚焦.

...

既然你知道在触摸模式下不存在焦点,我必须解释它并不完全正确.焦点可以存在于触摸模式中,但是以非常特殊的方式,我们称其为可触摸模式.此特殊模式是为接收文本输入的小部件创建的,如EditText,或者在启用过滤时,为ListView创建.

...

可聚焦的触摸模式是一种可以通过代码或XML自行设置的属性.但是,它应该谨慎使用,并且只能在非常特定的情况下使用,因为它会破坏与Android正常行为的一致性.游戏是一个很好的应用程序示例,可以充分利用触摸模式属性中的可聚焦.如果在Google地图中全屏使用MapView,则可以正确地在触摸模式下使用可聚焦的另一个很好的示例.

  • 适当的SO风格的好答案.谢谢 (4认同)

Beh*_*nam 9

举一些例子并详细解释它们

我会给你自己的经验:

我有一个Google TV应用程序,它有大量的ImageButton活动.

我希望ImageButtons可以选择.

因此,如果某人使用鼠标或遥控器点击它们,它们将仅被选中(在我的情况下突出显示).然后,如果用户按下所选ImageButton,则触发该动作.通过XML布局启用focusableInTouchMode属性可以实现这种确切的行为.

我所要做的就是onClickListener为ImageButtons 设置一个普通的瞧!

我没有在手机上查看我的应用程序,但我想它会提供熟悉的结果.

编辑

什么时候?

我已经告诉过你我测试过的一个用例:当你onClickListener第一次点击并选择了按钮时,你想让你的按钮触发你的第二次点击动作Button.

我使用第一次点击获得"焦点"并在我的按钮上显示放大缩放动画.

怎么样?

只需在XML布局文件中设置按钮的属性focusableInTouchMode即可true.


Nik*_*iko 6

聚焦是一种观察状态,通常可以通过轨迹球和dpad改变焦点.当状态集中时,您的视图可以具有不同的背景.

可聚焦的触摸模式允许视图在用户触摸视图时获得焦点,这种组件的良好示例是EditText.

使用Button或任何可点击的组件按下状态通常是您感兴趣的.