当前位置: 首页 > 知识库问答 >
问题:

focusableInTouchMode和focusableInTouchMode之间的区别?

东郭弘方
2023-03-14

我想知道他们之间的实际区别。。。什么时候应该使用它们,如何使用它们,在什么情况下它们都有用?

给出一些例子并详细解释。

共有3个答案

王景山
2023-03-14

聚焦是视图的一种状态,通常可以使用轨迹球和dpad更改焦点。聚焦状态时,视图可以具有不同的背景。

触摸模式下的聚焦功能允许视图在用户触摸视图时获得聚焦,这类组件的一个很好的例子是编辑文本。

使用按钮或任何可单击的组件按下状态通常是您感兴趣的。

栾和风
2023-03-14

给出一些例子并详细解释

我给你我自己的经验:

我有一个Google TV应用程序,其中包含大量ImageButton的活动。

我希望图像按钮可以选择。

所以,如果一个人用鼠标或遥控器点击它们,它们将成为选中状态(在我的例子中突出显示)。然后,如果html" target="_blank">用户按下所选的图像按钮,操作将触发。通过XML布局启用focusableInTouchMode属性,可以实现这种精确的行为。

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

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

什么时候?

我已经告诉过你一个我测试过的用例:当你想让你的按钮的点击监听器(onClickListener)在你第一次点击并选择按钮后,在第二次点击时触发动作。

我使用第一次单击获得“焦点”,并在按钮上显示放大动画。

怎样

只需在XML布局文件中将按钮的属性设置为true即可。

陆城
2023-03-14

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

下面的引文应该说明这一点:

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

...

在触摸模式下,没有焦点也没有选择。一旦用户进入触摸模式,网格中列表中的任何选定项目都将成为未选择项。同样,当用户进入触摸模式时,任何聚焦的小部件都会变得不聚焦。

...

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

...

在触摸模式下可聚焦是一个属性,您可以通过代码或XML自行设置。然而,它应该谨慎使用,并且只能在非常特定的情况下使用,因为它破坏了与Android正常行为的一致性。游戏是一个很好的应用程序示例,它可以很好地利用触摸模式下的聚焦特性。如果像在谷歌地图中一样在全屏模式下使用MapView,这是另一个可以在触摸模式下正确使用聚焦的好例子。

 类似资料:
  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

  • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。

  • 问题内容: 有人可以解释一下 和 我不知道“确切”的含义 问题答案: 在这个例子中,什么都没有。当您具有多个具有相似名称的路径时,该参数将起作用: 例如,假设我们有一个显示用户列表的组件。我们还有一个用于创建用户的组件。的网址应嵌套在下。因此,我们的设置可能如下所示: 现在,这里的问题是,当我们转到路由器时,将通过所有定义的路由,并返回它找到的第一个匹配项。因此,在这种情况下,它将首先找到路线,然

  • 问题内容: 我很好奇printStackTrace()和toString()之间的区别是什么。乍一看,他们 似乎 做的完全相同。 码: 问题答案: 不,有重要区别!使用toString,您只有异常的类型和错误消息。使用printStackTrace()可以获得异常的整个堆栈跟踪,这对于调试非常有帮助。 System.out.println(toString())的示例: printStackTra

  • 问题内容: 我看不到两种方式之间的任何区别,@ Qualifier 始终与 @Autowired一起使用 。 VS 有人能让我知道其中的区别吗?谢谢! 问题答案: 可以单独使用。如果单独使用,将按类型进行接线。因此,如果在容器中声明了多个相同类型的bean,而又不知道要注入哪个bean,就会出现问题。结果,通过指定Bean名称(按名称进行绑定),与一起使用来阐明要实际连接的Bean 也按名称接线。