这个问题网上一搜一大堆,但写法基本都是一样的,往下看就这两行
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);