popupwindow 与 输入法

时间:2023-03-08 22:12:03

有时候popupwindow会被输入法覆盖, 有时候popupwindow会被输入法给顶上去. 而且这个问题还跟theme的windowFullscreen属性相关. 不过这些可以都不用管, 根据项目需求, 可自己设定相关参数.

        /** 输入法将覆盖popupwindow*/
popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
popupWindow.setSoftInputMode(android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING); /** 输入法将把popupwindow顶上去*/
popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
popupWindow.setSoftInputMode(android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

注意代码的顺序. 要先设置 需要输入法, 即 先设置 PopupWindow.INPUT_METHOD_NEEDED,  再设置 输入法会不会导致窗口尺寸有所调整, 即 SOFT_INPUT_ADJUST_NOTHING (不调整popupwindow尺寸)  和  SOFT_INPUT_ADJUST_RESIZE (调整窗口尺寸)

还有其它的一些参数. 可以查看PopupWindow.java & WindowManager.java 这个文件