使用 pt/mm/in 安卓设置视图的固定宽度大小



我正在尝试为视图设置固定宽度。"in"、"mm"和"pt"与密度无关,并且每个设备上的大小相同,还是我错了?我的视图宽度应该是 141.3pt/49.8mm ,所以我在 XML android: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);

问题是,这在某些设备上是可以的(在大多数设备上),但例如在三星银河平流层2上是不行的。我还有一种方法可以计算屏幕显示宽度(英寸和毫米)

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 毫米)。

三星银河

平流层2的图像(这是不正确的)和三星银河S4的图像(这是正确的)

那你怎么看?可能是设备有问题或?设备规格链接http://www.samsung.com/us/mobile/cell-phones/SCH-I415SAAVZW

有什么建议吗?谢谢

应始终以 dp(与密度无关的像素)指定视图的尺寸。避免使用其他设备。如果要指定文本大小,请使用 sp 单位。安卓中 px、dp、dip 和 sp 之间的区别

最新更新