6

我有 2 片:

1 三星安卓 3.0

    DisplayMetrics {density=1.0, width=600, height=976, 
scaledDensity=1.0, xdpi=161.55031, ydpi=155.51021}

1 低成本设备,Android 2.3.3

    DisplayMetrics {density=1.0, width=480, height=800, 
scaledDensity=1.0, xdpi=160, ydpi=160.42105}

如果我为每个屏幕尺寸使用不同的布局,那么两个设备都说它们是 large-long 和 mdpi,所以我无法通过使用布局文件夹名称来区分它们......问题是:

我使用带有 textSize="20dp" 的 TextView

在第一个设备中,文本宽度是屏幕的一半,在第二个设备中更大(屏幕宽度的 80%)。为什么?如果我使用 dp(而不是 px),我希望两个设备都以相同的方式显示文本。我也尝试过使用 sp 但没有任何变化......

(我以 TextView 为例,布局中的所有元素都有同样的问题:按钮大小,...)

我会尝试使用布局文件夹名称,例如“layout-w600dp”或 Android 3.2 中引入的其他名称,但事实并非如此。

我知道我可以通过 onLayout() 中的代码更改元素尺寸,但我不想这样做......

有什么建议吗?

更新

我使用主题解决了我的布局问题:在运行时激活特定的dimens.xml

4

1 回答 1

3

Dimention 上的android 文档这样说

dp与像素的比例会随着屏幕密度而变化,但不一定成正比

所以你看到的完全没问题

您可以使用 LinearLayout 重量实现 50% 的屏幕。请参阅

于 2012-06-06T09:39:34.147 回答