Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
Android 屏幕布局仅使用相对大小和填充,而不使用xml文件中的绝对像素定义_Android_Xml - Fatal编程技术网

Android 屏幕布局仅使用相对大小和填充,而不使用xml文件中的绝对像素定义

Android 屏幕布局仅使用相对大小和填充,而不使用xml文件中的绝对像素定义,android,xml,Android,Xml,我想在Android上布局我的所有屏幕,这样它们就可以与任何屏幕大小和分辨率兼容。所以我认为最好是使用weight属性使用某种相对规范 我知道如何指定按钮相对于其父按钮的宽度,但是我不知道如何将其应用于布局的所有方面。理想情况下,其背后的逻辑如下所示: horizontalSize = 100% verticalSize = 100% Button1: 20% padding to top <- no idea, how to do this, (only using fixed

我想在Android上布局我的所有屏幕,这样它们就可以与任何屏幕大小和分辨率兼容。所以我认为最好是使用
weight
属性使用某种相对规范

我知道如何指定按钮相对于其父按钮的宽度,但是我不知道如何将其应用于布局的所有方面。理想情况下,其背后的逻辑如下所示:

horizontalSize = 100%
verticalSize = 100%

Button1:
20% padding to top   <-  no idea, how to do this, (only using fixed sizes in relative layout)
10% height           <-  no idea, how to do this
50% width            <-  with weight attribute
center horizontally  <-  with layout_centerHorizontal

Button2:
20% padding to Button1 <- only know relative with use of fixed pixels
5%  padding to left
30% width
10% height

Button3:
20% padding to Button1
5% padding to right
30% width
10% height

....  
horizontalSize=100%
垂直尺寸=100%
按钮1:
20%的顶部填充实现这一点的一种方法(可能不是一种好方法)是使用以下方式以编程方式构建UI:

int width, height;
float scale;
private Display mDisplay;
mDisplay = getApplicationContext().getWindow().getWindowManager().getDefaultDisplay(); 
width = mDisplay.getWidth();
height = mDisplay.getHeight();
scale = getApplicationContext().getResources().getDisplayMetrics().density;
使用此功能,您可以根据屏幕(宽度和高度)计算尺寸,比例将帮助您实现所有倾角/像素转换:

int dip2pix(int dip)
{
    return Math.round(dip * scale);
}

int pix2dip(int pix)
{
    return Math.round(pix / scale);
}

首先,您应该尝试在没有绝对像素值的情况下设计布局。而是使用dp/dip单位(与密度无关的像素)。所有布局的基础是中等屏幕尺寸,320x480像素。因此,设计您的布局,使其适合320x480,而不是px使用dp单元,最终在所有屏幕上看起来都一样

按钮1的示例:

20% of 480 = 96, so your padding top value would be 96dp
10% of 480 = 48dp
50% of 320 = 160dp

我不确定320x480,我在其他地方看到它也可能是160。请看这里:320x480是正常比例mdpi手机的合适尺寸是的。然而,现在你需要记住的是,人们将经常使用横向设备,还有一个事实,即开始有一些android设备具有稍微不标准的纵横比。160是mdpi dpi,240是hdpi,因此所有内容都按比例缩放x1.5 320x480=160dp@Zulaxia您是正确的,但在大多数情况下,您将设计一个单独的布局景观无论如何