如何为我的盒子设置一个在设备上保持不变的百分比宽度?

时间:2013-03-04 21:34:08

标签: java android

我已经变得困惑,我正在尝试设置一个盒子的最小宽度,对于我希望它的最小宽度为屏幕宽度的20%的所有设备。我怎么能实现这个目标呢?

我从平板电脑和XHDPI Galaxy S3获得了两个屏幕的dpWidth。 S3的dpWidth为300,平板电脑800.在这种情况下,我可以通过计算20%的dpWidth并将其设置为我的方框dp值来以编程方式执行此操作。

我猜我不能用重量,因为它只是宽度。那么我怎样才能在XML中做到这一点?

也是一个后续问题,dp如何有用?如果一个设备可以有300个而另外800个那么dp的效果会发生显着变化!我不明白为什么没有更多有用的单位可以使用,即屏幕分为100个单位或其他。

1 个答案:

答案 0 :(得分:3)

你可以使用体重。线性布局中的权重仅在布局方向上计算。因此,如果您有一个水平LinearLayout,权重将控制相对宽度。如果您希望该布局中的项目跨越整个屏幕,请将它们全部设置为fill_parent,相应地设置权重(3:1使其为75/25%),然后将父布局的宽度设置为0dp。结果将是您指定的权重中的全屏布局。

Dp非常有用。 1 dp基本上是1/160英寸。如果你想要保持真实世界的大小,你可以使用dp。如果您希望它以像素为单位保持固定大小,请使用px。如果您希望大小非常基于字体大小,请使用sp。