如果页面上有EditText控件,那么用户打开该页面时往往会自动弹出输入法。这是因为编辑框(EditText)会默认获得焦点,即默认模拟用户的点击操作,于是输入法的软键盘就弹出来了,想要避免这种情况,就得阻止编辑框默认获得焦点。做法是通过focusable和focusableInTouchMode属性强制地将焦点的获取权限交给该页面的根节点,从而避免输入法自动弹出.
代码如下:
android:focusable="true"
android:focusableInTouchMode="true"
android:focusable
是针对"老人机"等键盘下操作的情况.如果Focusable设置为true,则键盘上下左右移动,被选中的部分会有高亮提示表示目前的焦点,焦点会随键盘的操作移动,若焦点在Button上,当点击"确认"时会进行相应的onClick()操作。
android:focusableInTouchMode
是针对触屏情况下的(用户可以直接点击,因而不用高亮来表示自己当前选择的是哪一个).用户直接用手指点击控件比如Button(大多数控件的FocusableInTouchMode默认为false),这个时候会执行点击事件,进行相应的onClick()操作.如果其FocusableInTouchMode设置为true,则第一次点击就相当于获取焦点,只有点击下一次才会触发onClick()事件.
———————————————————
详细介绍可以参考以下博客关于 Android touch mode和focusableInTouchMode分析