你可以即时的计算你的popupwindow所占空间 比如你现在的初始化传参是300pxX250px 最好即时的dp转成px
/**
* 将dip或dp值转换为px值,保证尺寸大小不变
*
* @param dipValue
* @param scale
* (DisplayMetrics类中属性density)
* @return
*/
public static int dip2px(float dipValue, float scale) {
return (int) (dipValue * scale + 0.5f);
}
public static DisplayMetrics getMetrics(Activity activity) {
DisplayMetrics metrics = new DisplayMetrics();
Display display = activity.getWindowManager().getDefaultDisplay();
display.getMetrics(metrics);
return metrics;
}
再调用的话就是new PopupWindow(findViewById(R.id.mainlayout), dip2px(300,getMetrics(youractivity)), dip2px(250,getMetrics(youractivity)));
还有 如果是在平板上面显示 这种方法也会失去效果 如果你想在高分辨率下 显示 就得传更高的值才有相同的显示效果 下面是判断是否是平板的方法
private boolean isPad() {
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
// 屏幕宽度
float screenWidth = display.getWidth();
// 屏幕高度
float screenHeight = display.getHeight();
DisplayMetrics dm = new DisplayMetrics();
display.getMetrics(dm);
double x = Math.pow(dm.widthPixels / dm.xdpi, 2);
double y = Math.pow(dm.heightPixels / dm.ydpi, 2);
// 屏幕尺寸
double screenInches = Math.sqrt(x + y);
// 大于6尺寸则为Pad
if (screenInches >= 6.0) {
return true;
}
return false;
}
你Popupmenu的布局单独放在一个layout.xml里面,然后在layout-分辨率X分辨率里面加入对应的布局。这样就会根据分辨率加载对应的布局了。
似乎你在知道问有些徒劳