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方法来获取当前焦点,从而正确隐藏输入法。


以上就是个人觉得比较合理的控制输入法的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值