PopupWindow與Edittext結合使用所遇到的坑


PopupWindow與Edittext結合使用一起實現目的:既可以編輯輸入想要的內容,還可以通過下拉列表來實現內容的選擇。

我就是這樣的一個目的,結果很簡單的目的卻遇到了很大的坑,下面我將把我遇到的問題及相應的解決辦法分享給大家。

遇到的坑:

1、PopupWindow與Edittext一起使用,PopupWindow搶焦點導致Edittext無法編輯;

2PopupWindow的下拉列表顯示出來了,並遮擋了軟鍵盤。造成無法使用軟鍵盤(注意,你沒有看錯:是下拉列表遮住了軟鍵盤而無法使用鍵盤輸入內容,而不是軟鍵盤擋住下拉列表);

 

解決辦法:

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的位置.


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM