可聚焦和可聚焦InTouchMode之间的区别?
Posted
技术标签:
【中文标题】可聚焦和可聚焦InTouchMode之间的区别?【英文标题】:Difference between focusable and focusableInTouchMode? 【发布时间】:2014-08-01 02:23:03 【问题描述】:我想知道它们之间的实际区别......什么时候应该使用,应该如何使用,在哪些情况下有帮助?
举几个例子,详细解释一下。
【问题讨论】:
***.com/questions/8655892/… android-developers.blogspot.fi/2008/12/touch-mode.html Romain 说应该避免使用 focusableInTouchMode,除非你正在开发游戏 如果 focusable = false - 如果你按下键盘上的 Next 按钮,你不能聚焦这个视图,甚至 EditText。 【参考方案1】:在Android开发者博客中有解释:http://android-developers.blogspot.co.at/2008/12/touch-mode.html
下面的引号应该清楚:
就其本身而言,触摸模式非常容易理解,因为它只是指示最后一次用户交互是否是通过触摸屏进行的。例如,如果您使用的是 G1 手机,选择带有轨迹球的小部件将使您脱离触控模式;
...
在触摸模式下,没有焦点,也没有选择。任何选定的项目 一旦用户输入,在网格中的列表中就会被取消选中 触摸模式。同样,任何有焦点的小部件在 用户进入触摸模式。
...
既然您知道在触控模式下不存在焦点,我必须解释一下,这并不完全正确。焦点可以存在于触摸模式中,但以一种非常特殊的方式,我们称之为触摸模式中的可聚焦。这种特殊模式是为接收文本输入的小部件创建的,如 EditText 或启用过滤时的 ListView。
...
在触摸模式下可聚焦是您可以自行设置的属性 来自代码或 XML。但是,它应该谨慎使用,并且只在 非常特殊的情况,因为它破坏了与 Android 正常的一致性 行为。游戏是应用程序的一个很好的例子 很好地利用了触控模式下的可聚焦属性。 MapView,如果用于 全屏,就像在谷歌地图中一样,是另一个很好的例子,你可以在哪里 在触摸模式下正确使用可聚焦。
【讨论】:
正确的 SO 风格的好答案。谢谢【参考方案2】:举个例子,详细解释一下
我会给你我自己的经验:
我有一个 Google TV 应用程序,它有一个包含大量 ImageButton 的活动。
我希望 ImageButtons 是可选择的。
因此,如果有人用鼠标或遥控器点击它们,它们只会被选中(在我的例子中突出显示)。然后,如果用户按下选定的ImageButton
,动作就会触发。 这个确切的行为是通过 XML 布局启用 focusableInTouchMode
属性来实现的。
我所要做的就是为 ImageButtons 设置一个普通的onClickListener
,瞧!
我还没有在手机上检查过我的应用程序,但我想它会提供熟悉的结果。
编辑
什么时候?
我告诉过你一个我测试过的用例:当你希望你的 Button 的 onClickListener
在你第一次点击并选择 Button
之后在你第二次点击时触发动作。
我使用第一次点击获得“焦点”并在我的按钮上显示放大动画。
怎么做?
只需在您的 XML 布局文件中将按钮的属性 focusableInTouchMode
设置为 true
。
【讨论】:
何时使用它们。他们有什么帮助【参考方案3】:Focused 是一种视图状态,通常可以使用轨迹球和 dpad 更改焦点。聚焦状态时,您的视图可以有不同的背景。
Focusable in touch mode 允许视图在用户触摸视图时获得焦点,这种组件的一个很好的例子是EditText
。
Button
或任何可点击组件的按下状态通常是您感兴趣的。
【讨论】:
"使用 Button 或任何可点击的组件,您应该专注于按下状态。"什么?其余答案 +1【参考方案4】:用户可以通过使用硬件按键或按钮,或者通过触摸屏幕与他们的设备进行交互。触摸屏幕使设备进入触摸模式。然后,用户可以通过触摸屏幕上的虚拟按钮、图像等与它进行交互。
要检查设备是否处于触摸模式,请调用 View 类的 isInTouchMode() 方法。
【讨论】:
以上是关于可聚焦和可聚焦InTouchMode之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章