這個問題網(wǎng)上一搜一大堆娄柳,但寫法基本都是一樣的卢未,往下看就這兩行
popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
停! 千萬別復制 往下接著看吧 (可以試試這兩行復制上去真的屁用不管)
popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
這行代碼雖然不會導致編譯失敗,但是它下面畫著紅色波浪線的毁涉,正確的寫法是setInputMethodMode,而不是setSoftInputMode.
在注冊文件中設置android:windowSoftInputMode="adjustResize" 是沒有用的,它只有在Activity的EditText里面才有用,這里是在PopupWindow里面.
1.上面的方案,放在popupWindow的show方法之前,在部分手機是有效的,也就是這樣子用:
View view = LayoutInflater.from(this).inflate(R.layout.view_pop, null);
popview = new PopupWindow(view,
android.view.ViewGroup.LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT, true);
popview.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popview.setFocusable(true);
// 設置點擊其他地方就消失
popview.setOutsideTouchable(true);
popview.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
popview.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
popview.showAtLocation(ll_all, Gravity.BOTTOM
| Gravity.CENTER_VERTICAL, 0, 0);