Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何为我的盒子设置一个在不同设备上保持不变的宽度百分比?_Java_Android - Fatal编程技术网

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

Java 我如何为我的盒子设置一个在不同设备上保持不变的宽度百分比?,java,android,Java,Android,我感到困惑,我试图设置一个盒子的最小宽度,对于所有设备,我希望它的最小宽度为屏幕宽度的20%。我怎样才能做到这一点 我已经从平板电脑和我的XHDPI Galaxy S3中获得了两个屏幕的DPI宽度。S3的dpWidth为300,平板电脑的dpWidth为800。在这种情况下,我可以通过编程计算20%的dpWidth,并将其设置为我的box dp值 我猜我不能使用重量,因为它只是宽度。那么如何在XML中实现这一点呢 还有一个后续问题,dp到底有什么用处?如果一个设备可以有300个,另一个设备可以有

我感到困惑,我试图设置一个盒子的最小宽度,对于所有设备,我希望它的最小宽度为屏幕宽度的20%。我怎样才能做到这一点

我已经从平板电脑和我的XHDPI Galaxy S3中获得了两个屏幕的DPI宽度。S3的dpWidth为300,平板电脑的dpWidth为800。在这种情况下,我可以通过编程计算20%的dpWidth,并将其设置为我的box dp值

我猜我不能使用重量,因为它只是宽度。那么如何在XML中实现这一点呢


还有一个后续问题,dp到底有什么用处?如果一个设备可以有300个,另一个设备可以有800个,那么dp的效果会发生巨大的变化!我不明白为什么没有更有用的单位可以使用,例如屏幕被分成100个单位或其他什么单位。

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


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

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

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