Ben*_*ero 3 android focus setfocus android-view
我试图设置组件的可聚焦性,并找到了这两种方法,希望我可以使用它们使组件仅在用户触摸时才可聚焦,而不能通过编程方式请求:
myComponent.setFocusable(false);
myComponent.setFocusableInTouchMode(true);
Run Code Online (Sandbox Code Playgroud)
然后我查看了他们的文档:
public void setFocusable(布尔型可聚焦)
设置此视图是否可以接收焦点。将其设置为false还将确保该视图在触摸模式下无法聚焦。
public void setFocusableInTouchMode(布尔的focusableInTouchMode)
设置在触摸模式下此视图是否可以接收焦点。将其设置为true也将确保该视图可聚焦。
那么,如果隐式调用任何一个,则为什么要区分?
视图系统中有两个标志:FOCUSABLE和FOCUSABLE_IN_TOUCH_MODE。每种方法都设置/清除其各自的标志,并且在两种情况下,一种方法会影响另一种方法的状态:
setFocusableInTouchMode(true)将确保FOCUSABLE设置该标志。setFocusable(false)将确保FOCUSABLE_IN_TOUCH_MODE清除该标志。换句话说,FOCUSABLE_IN_TOUCH_MODE取决于全局FOCUSABLE标志,没有全局标志就无法设置。
模式上的区别有点旧。这个想法是要区分用户何时使用D-pad或轨迹球浏览UI与点击触摸屏之间。如今,设备几乎总是处于“触摸模式”,但是在某些情况下FOCUSABLE会检查基础标志。主要是在从输入法的返回键中搜索“下一个”视图时或在打开辅助功能时。
有关不同模式的更多详细信息,您可以阅读SDK View Documentation的“焦点处理”和“触摸模式”部分。
| 归档时间: |
|
| 查看次数: |
2004 次 |
| 最近记录: |