android - 2 台设备上的大小不同,即使我使用 "dp"

标签 android text size screen dimension

我有 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() 中的代码更改元素尺寸,但我不想那样做...

有什么建议吗?

更新

我使用主题解决了布局方面的问题:Activate a specific dimens.xml at runtime

最佳答案

android documentation on Dimention说这个

The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion

所以你所看到的完全没问题

您可以使用 LinearLayout weigth 实现 50% 的屏幕..引用 this

关于android - 2 台设备上的大小不同,即使我使用 "dp",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10910966/

相关文章:

android - NestedScrollview 中的 Recyclerview(有很多项目)崩溃了 Android

android - 物理设备不会出现,模拟器工作正常

javascript - 这是使用 jQuery 将 HTML 转换为文本的有效方法吗?

java - 返回 JComponent 的实际大小,如显示的那样

java - 在下一个 Activity 中创建列表之前,在加载屏幕中显示一个计数器(对列表项进行计数)

css - 两个容器需要大小相同......但它们不是 : why?

android - 无法实例化抽象类 clarifai2.dto.ClarifaiStatus

android - 我可以为 Android Activity 分配 "default"OnClickListener() 吗?

java - 如何让我的文本每行不打印一个字符?

windows - sed 或 awk - 需要获取子字符串并将其附加到行尾