使用 popupwindow这个控件,在一些大屏幕手机上有些按钮就显示的不完全了, popupWindow = new PopupWindow(findViewById(R.id.mainlayout), 300, 250);(在小屏幕上显示效果不错)我是这么调用的,popupWindow具体定义在layout中,请问怎么定义大小,能全部显示又美观点,相对布局方式?
2013-10-28 15:45
提问者采纳
你可以即时的计算你的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; }