600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > android 隐藏输入法时自动关闭弹窗 Android疑难杂症之Dialog消失 关闭输入法

android 隐藏输入法时自动关闭弹窗 Android疑难杂症之Dialog消失 关闭输入法

时间:2023-04-22 13:27:28

相关推荐

android 隐藏输入法时自动关闭弹窗 Android疑难杂症之Dialog消失 关闭输入法

由于项目需要,实现一个小需求:

1) 有一个功能是弹出一个输入框,自动弹出输入法

2)关闭时 ,自动隐藏输入法

感觉很简单的一个功能,页面做完后发现,输入法没有弹出来

怎么办?

这个很简单,手动打开输入法好了,关闭页面也可以手动关闭

下面是开启输入法 和 关闭输入法的方法

public static void openKeybord(EditText editText, Context context) {

InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);

imm.showSoftInput(editText, InputMethodManager.RESULT_SHOWN);

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

}

/**

* 避免 输入框为空,延迟后也会提高用户体验

* @param mEditText

* @param mContext

*/

public static void openKeybordDelay(final EditText mEditText, final Context mContext) {

Timer timer = new Timer();

timer.schedule(new TimerTask() {

@Override

public void run() {

openKeybord(mEditText, mContext);

}

}, 100);

}

/**

* 关闭软键盘

*

* @param editText

* @param context

*/

public static void closeKeybord(EditText editText, Context context) {

InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

}

本以为功能搞定,没想到的是,关闭输入法,无论在onDissmissLisener回调接口还是在onCancelListener中调用都无法隐藏输入法。

在经过查找资料发现是Dialog已经消失,所有无法取消输入法,所以解决方法:只需要在取消Dialog之前调用就好了

@Override

public void dismiss() {

//避免闪屏 提高用户体验

new Handler().postDelayed(new Runnable() {

@Override

public void run() {

InputDialog.super.dismiss();

}

},500);

KeyBoardHelper.closeKeybord(editText,getContext());

}

至此,大功告成!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。