Dialog 中彈出鍵盤無法隱藏鍵盤的心得體會

2021-09-11 02:18:41 字數 867 閱讀 8286

今天在處理乙個關於鍵盤彈出隱藏的bug的時候,遇到了無法收起鍵盤的bug。

問題:在dialog中有個edittext ,彈出鍵盤後,如果不手動去關閉鍵盤呼叫普通鍵盤的關閉會無效。

首先一般dialog隱藏的時候我們會在ondismisslistener中去隱藏輸入法

setondismisslistener(new ondismisslistener() 

});

這樣沒有效果,除錯後發現meditphone.getwindowtoken()為null,

這裡就直接return了 ,問題很明顯了。

那麼就需要找乙個比較好的時機在windowtoken為null之前去隱藏,那麼這裡就想到了dialog外部觸控事件

這裡就可以ontouch觸控事件裡攔截一下事件,然後關閉輸入法。**如下

@override

public boolean ontouchevent(motionevent event)

return super.ontouchevent(event);

}//這裡符合條件就可以關閉輸入法了

public boolean shouldcloseontouch(context context, motionevent event)

return false;

}//判斷下邊界

private boolean isoutofbounds(context context, motionevent event)

這裡就完美解決了。

如何在service中彈出dialog

更新於 05月09日 訪問 2071 我們都知道service是沒有介面的,默默的在後台執行邏輯 有時候需要和前台有所互動,如 toast或彈出提示框等等 在service中彈出toast很簡單,只要使用handler就可搞定,如下 123456 hanlder post new runnable ...

如何在service中彈出dialog

更新於 05月09日 訪問 3344 我們都知道service是沒有介面的,默默的在後台執行邏輯 有時候需要和前台有所互動,如 toast或彈出提示框等等 在service中彈出toast很簡單,只要使用handler就可搞定,如下 123456 hanlder post new runnable ...

如何在service中彈出dialog

在service中彈出toast很簡單,只要使用handler就可搞定,如下 hanlder.post new runnable 而在service中彈出dialog時,如果寫和activity同樣的 時會報錯 因為這個dialog的顯示是需要依附於乙個activity,如果需要在servcie中顯...