android 键盘 自动消失,Android 系统键盘怎么也不消失
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
在我們開(kāi)發(fā)EditText的時(shí)候,會(huì)經(jīng)常和系統(tǒng)輸入框打交道,各種系統(tǒng)輸入框的顯示和隱藏的控制。常常也碰到各種顯示不了,隱藏不了的問(wèn)題。最近碰到一個(gè)系統(tǒng)輸入框一直顯示不了的問(wèn)題。
問(wèn)題:自定義密碼輸入框顯示后,系統(tǒng)輸入框需要顯示,密碼輸入完畢后系統(tǒng)輸入框需要消失,這個(gè)時(shí)候,不管怎么樣都消失不了。
上網(wǎng)找了很多解決方案,對(duì)于我這個(gè)情況都沒(méi)有效果。稍微總結(jié)下:
1
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
2
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view,InputMethodManager.SHOW_FORCED);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0); //強(qiáng)制隱藏鍵盤(pán)
3
將EditText的父級(jí)控設(shè)置成:
Android:focusable=”true”
android:focusableInTouchMode=”true”
4
在AndroidManifest.xml中的application中添加如下第一行代碼
android:windowSoftInputMode=”adjustPan|stateHidden”
5
if (getWindow().getAttributes().softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) {
if (getCurrentFocus() != null)
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
.......等等諸如此類(lèi)的方法對(duì)于一般的情況是有效果的。但是對(duì)于我的這個(gè)情況,不管是在onDestroy()方法里還是在輸入框需要消失的時(shí)候去調(diào)這些方法都是沒(méi)有用。后來(lái)我想到了會(huì)不會(huì)是焦點(diǎn)的問(wèn)題,輸入框不消失肯定是有某個(gè)控件或者view獲得了焦點(diǎn),于是,想到了如下的解決方案。
v.requestFocus();
if (v != null) {
IBinder token = v.getWindowToken();
if (token != null) {
InputMethodManager im = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(token, 0);
}
}
其中的v可以是任意需要獲取焦點(diǎn)的view。經(jīng)測(cè)試,能解決很多系統(tǒng)輸入框不能消失的問(wèn)題。
總結(jié)
以上是生活随笔為你收集整理的android 键盘 自动消失,Android 系统键盘怎么也不消失的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: iPhone手机史上最全的扫盲帖【解锁,
- 下一篇: c语言c++三人/双人贪吃蛇源码,双缓冲