做項(xiàng)目的時(shí)候有個(gè)需求洛史,在有EditText輸入框的界面惯殊,輸入法彈出的情況下,點(diǎn)擊界面任意空白地方隱藏輸入法也殖。
于是我在 Activity 的 onTouchEvent() 做了如下處理:
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
//觸摸屏幕空白出隱藏輸入法
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(0,
InputMethodManager.HIDE_NOT_ALWAYS);
}
return super.onTouchEvent(event);
}
雖然有輸入法的情況下觸摸空白區(qū)域是確實(shí)隱藏了輸入法土思,但是這時(shí)候出現(xiàn)了另一個(gè)問題,在沒有顯示輸入法的情況想觸摸空白區(qū)域又彈出輸入法來了忆嗜,而且是不管EditText有沒有焦點(diǎn)都會(huì)彈出來己儒。
于是換另一種方式隱藏輸入法:
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
//觸摸屏幕空白出隱藏輸入法
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0); //隱藏輸入法
}
return super.onTouchEvent(event);
}
問題終于解決了。
toggleSoftInput()
方法捆毫,是讓軟鍵盤在顯示和隱藏之間切換闪湾。它是一個(gè)開關(guān)的方法,會(huì)根據(jù)當(dāng)前的狀態(tài)做相反的操作绩卤。
通過以下兩篇文章應(yīng)該能理解Android 軟鍵盤:
Android 軟鍵盤的顯示和隱藏途样,這樣操作就對(duì)了
Android 軟鍵盤的全面解析,讓你不再怕控件被遮蓋