去除EditText自动获得的焦点
2011-07-31 18:26
169 查看
当带有EditView的activity第一次进入时,第一个EditText框会自动获得焦点弹出输入法,在保证点击输入框还能正常弹出输入法的情况下,如何去掉这个刚进入弹出来的输入法呢?
关闭输入法的方法都失败了,如下:
先是:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
然后,下面这个导致空指针(界面是嵌套布局的,没法知道到底哪个组件拿到了焦点)
imm.hideSoftInputFromInputMethod(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
下面这个没效果:
if (imm.isActive())
{
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_IMPLICIT_ONLY);
}
【验证有效的方法1】
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=26099&archiver=1
在activity 的 OnCreate方法里面加下面这句代码:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
有没有副作用暂时不知道,但是输入法的确藏起来了,而且以后点击文本框输入法还能出来。
【验证有效的方法2】
http://hi.baidu.com/lphack/blog/item/c41a517613fa8a03b151b9fe.html
在EditText控件之前加入一个同级别的看不见的组件来夺取焦点,没有焦点输入法就不会出来了:
<LinearLayout
android:id="@+id/linearLayout_focus"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="0px"
android:layout_height="0px"/>
还有些更麻烦的方法没测试,比如:先把所有输入框设置为不可获取焦点,找个时间再改回去;先把上层容器藏起来,过段时间再显示。
关闭输入法的方法都失败了,如下:
先是:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
然后,下面这个导致空指针(界面是嵌套布局的,没法知道到底哪个组件拿到了焦点)
imm.hideSoftInputFromInputMethod(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
下面这个没效果:
if (imm.isActive())
{
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_IMPLICIT_ONLY);
}
【验证有效的方法1】
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=26099&archiver=1
在activity 的 OnCreate方法里面加下面这句代码:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
有没有副作用暂时不知道,但是输入法的确藏起来了,而且以后点击文本框输入法还能出来。
【验证有效的方法2】
http://hi.baidu.com/lphack/blog/item/c41a517613fa8a03b151b9fe.html
在EditText控件之前加入一个同级别的看不见的组件来夺取焦点,没有焦点输入法就不会出来了:
<LinearLayout
android:id="@+id/linearLayout_focus"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="0px"
android:layout_height="0px"/>
还有些更麻烦的方法没测试,比如:先把所有输入框设置为不可获取焦点,找个时间再改回去;先把上层容器藏起来,过段时间再显示。
相关文章推荐
- Android去除EditText自动获得的焦点
- [Android]去除EditText自动获得的焦点,解决软键盘弹出问题
- 让editText不自动获得焦点
- 让EditText不自动获得焦点
- 禁止进入activity后EditText自动获得焦点的方法
- 如何禁止进入activity后EditText自动获得焦点
- 【项目中】禁止进入activity后EditText自动获得焦点的方法
- 让editText不自动获得焦点
- android 设置 EditTextView不自动获得焦点
- EditText无法输入内容,无法获得焦点,无法自动弹出键盘
- 让edittext不自动获得焦点
- Android启动Activity之后阻止EditText自动获得焦点
- 小笔记 使android界面打开时EditText不自动获得焦点
- 让editText不自动获得焦点
- android:使android界面打开时EditText不自动获得焦点
- android AlertDialog中的Edittext自动获取焦点并弹出软键盘
- Android取消EditText自动获取焦点默认行为
- Android取消EditText自动获取焦点行为
- Android Dialog 中的EditText自动获取焦点弹出软键盘
- Android 如何让EditText不能自动获取焦点