PopupWindow與Edittext結合使用一起實現目的:既可以編輯輸入想要的內容,還可以通過下拉列表來實現內容的選擇。
我就是這樣的一個目的,結果很簡單的目的卻遇到了很大的坑,下面我將把我遇到的問題及相應的解決辦法分享給大家。
遇到的坑:
1、PopupWindow與Edittext一起使用,PopupWindow搶焦點導致Edittext無法編輯;
2、PopupWindow的下拉列表顯示出來了,並遮擋了軟鍵盤。造成無法使用軟鍵盤(注意,你沒有看錯:是下拉列表遮住了軟鍵盤而無法使用鍵盤輸入內容,而不是軟鍵盤擋住下拉列表);
解決辦法:
1、對於第一個問題的解決辦法網上較多,我在這里無法對Edittext進行編輯是因為我在PopupWindow中設置了獲取焦點。
即 setFocusable(true);如果在PopupWindow或者PopupWindow的子類(繼承PopupWindow的自定義的控件或方法)設置setFocusable(true),那么將會導致Edittext無法編輯。
2、網上一大堆的都是軟鍵盤擋住PopupWindow的下拉列表數據,而很少有PopupWindow的下拉列表擋住軟鍵盤的解決方案。在這里經過多次嘗試找到了一個解決方法:
private SpinerPopWindow mSpinerPopWindow;(SpinerPopWindow 繼承了PopupWindow,所以可以看作是PopupWindow的使用)
/**中間省略好多代碼**/
mSpinerPopWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); mSpinerPopWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
上面代碼匯總的紅色部分是解決PopupWindow下拉列表擋住軟件盤的解決方案,當然這兩句代碼放在引用PopupWindoww的位置.

上面兩個坑是我在開發過程中遇到的問題,耗費了整整一天的時間才得到了解決。這里做出總結希望能對您有所幫助。