Android控制输入法

在开发过程中,经常需要使用代码去控制输入法的显示和隐藏。通过用户行为(手势,等待时间,响应)等去判断是否需要继续编辑,进而控制输入法的自动隐藏,可以提高用户体验。不过百度所说的一些控制输入法的方法,都是千篇一律相互抄袭的,完全没有任何效果。下面来看看谷歌的结果。

一、显示输入法

if (view.requestFocus()) {
    InputMethodManager imm = (InputMethodManager)
            getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
}

这个方法是谷歌官方文档给出的,效果自然是不用说了。需要注意的是showSoftInput中的view,一定要选择为你想让用户输入的EditText,才能保证焦点的正确设置

二、隐藏输入法

// 隐藏软键盘
InputMethodManager inputMethodManager = (InputMethodManager) mActivity.getSystemService(Context.INPUT_METHOD_SERVICE);
if (mActivity.getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) {
    if (mActivity.getCurrentFocus() != null)
        inputMethodManager.hideSoftInputFromWindow(mActivity.getCurrentFocus().getWindowToken(),
            InputMethodManager.HIDE_NOT_ALWAYS);
}

关键在于当前焦点的获取,如果设置的焦点错误,则无法正确隐藏输入法。如果存在多个EditText的情况下,可以使用getCurrentFocus方法来获取当前焦点,从而正确隐藏输入法。


以上就是个人觉得比较合理的控制输入法的方法。

你可能感兴趣的:(android,技巧)