Android 弹出软键盘覆盖PopupWindow 解决方案

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

你可能感兴趣的:(Android 弹出软键盘覆盖PopupWindow 解决方案)