您的位置:首页 > 其它

去除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"/>

还有些更麻烦的方法没测试,比如:先把所有输入框设置为不可获取焦点,找个时间再改回去;先把上层容器藏起来,过段时间再显示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: