android关于EditText获取焦点的一个问题

来源:互联网 发布:外汇软件怎么买涨买跌 编辑:程序博客网 时间:2024/05/22 17:19

之前用EditText遇到好多关于焦点的问题,最近想到了一个问题,就记录下来,以后再慢慢添加。

1.页面刷新会让EditText失去焦点,比如设置某个控件显示隐藏,刷新adapter等等。我们可以延迟50ms给EditText重新设置焦点。

2.我们知道,focusableInTouchMode和focusable是用来获取焦点的,如果其他控件设置了这属性,那它就能抢EditText的焦点。我遇到过listView设置了这两个属性,结果刷新布局后软键盘输入法由中文变成英文的情况。那么去掉其他控件的这两个属性就好了。

3.适当的时候调用requestFocus或requestFocusInTouchMode可以主动获取焦点。

4.Activity进去时隐藏软键盘,可以直接在manifest里面放属性就可以了

android:windowSoftInputMode="stateHidden"

点击外面其他控件软键盘不消失,可以直接调用隐藏软键盘的方法来解决。贴一个方法。

protected void hideSoftKeyboard() {    if (getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) {        if (getCurrentFocus() != null)            inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),                    InputMethodManager.HIDE_NOT_ALWAYS);    }}
原创粉丝点击