我试图将修复宽度设置为视图。 “in”,“mm”和“pt”是密度无关的,每个设备上的大小相同,或者我错了? 我的视图宽度应为141.3pt / 49.8mm,所以我在XML中设置:layout_width =" 141.3pt"或通过代码:
float requiredPx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PT, (float) 141.3, dm);
ViewGroup.LayoutParams params = mRequiredSizeLine.getLayoutParams();
params.width = (int)requiredPx;
mRequiredSizeLine.setLayoutParams(params);
问题是,在一些设备上(大多数设备上)都可以,但是例如在三星Galaxy Stratosphere 2上就不行了。 我还有一个计算屏幕显示宽度in和mm
的方法private double checkDeviceWidthInInches(){
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
double x = Math.pow(dm.widthPixels/dm.xdpi,2);
double y = Math.pow(dm.heightPixels/dm.ydpi,2);
return Math.sqrt(x);
您可以从下面的第一张图片中看到,这也是不正确的(屏幕宽度不可能是76毫米)。
Image of Samsung Galaxy Stratosphere 2(这是不正确的)和Image of Samsung Galaxy S4(这是正确的)
那你觉得怎么样?可能是该设备的一些问题或?设备规格的链接 http://www.samsung.com/us/mobile/cell-phones/SCH-I415SAAVZW
有什么建议吗? 感谢
答案 0 :(得分:0)
您应始终以dp(与密度无关的像素)指定视图的尺寸。避免使用其他单位。如果要指定文本大小,请使用sp单位。 Difference between px, dp, dip and sp in Android