Android:支持同一屏幕大小类型中的多个屏幕大小

Android:支持同一屏幕大小类型中的多个屏幕大小,android,android-layout,Android,Android Layout,我遇到的问题与支持多种屏幕尺寸有关——我认为这是一个相当常见的问题。我找了很多,但没有找到有用的东西 我的项目按照传统布局,带有支持各种大小的文件夹,称为布局,小布局,大布局,布局xlarge 因此,正如我所发现的,即使在每种尺寸范围内,屏幕的尺寸也不尽相同。例如,我的320x480屏幕符合标准尺寸布局,但某人的480x800也符合标准尺寸布局。可以想象,我的应用程序的内容不会填满480x800设备的整个屏幕,因为有更多的区域。下面是它的外观示例: 在320x480上(我的设计目的): 在48

我遇到的问题与支持多种屏幕尺寸有关——我认为这是一个相当常见的问题。我找了很多,但没有找到有用的东西

我的项目按照传统布局,带有支持各种大小的文件夹,称为
布局
小布局
大布局
布局xlarge

因此,正如我所发现的,即使在每种尺寸范围内,屏幕的尺寸也不尽相同。例如,我的320x480屏幕符合标准尺寸布局,但某人的480x800也符合标准尺寸布局。可以想象,我的应用程序的内容不会填满480x800设备的整个屏幕,因为有更多的区域。下面是它的外观示例:

在320x480上(我的设计目的):

在480x800上(请注意底部的额外空间):

现在,我已经做了很多研究,应用了很多技术,努力使我的应用程序在所有屏幕上看起来都很漂亮,但我觉得我缺少了一些基本的东西。我已经采取了所有基本步骤来使用
dp
而不是
px
,在任何地方都使用
RelativeLayout
,诸如此类的东西。但我需要一些方法让我的应用程序重新调整大小,以更好地适应更大的屏幕。例如,各个组件之间的边距可能会稍微增加,以占用更多的空白垂直空间


有什么建议或帮助吗?在最坏的情况下,是否有一种方法可以设计一个专门针对480x800屏幕的布局(因为它们似乎是最常见的)?谢谢。

320:480与480:800的比率不同。因此,相对于水平空间,后者的垂直空间要比前者多。因此,您的布局没有问题。

您需要设计屏幕,以便在屏幕大小缩小或增大时始终考虑您定义的视图的行为。正如您所看到的,即使在相同大小的类别中,屏幕也可能有很大的差异


对于显示的屏幕,需要使用权重而不是确切的dp量来给出EditText组件的宽度。你可以找到许多关于如何做这件事的文章,这是一个开始。

如果我是你,我会使用这样的布局:

<LinearLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1">
        <!-- Your first form line -->
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1">
        <!-- Your second form line -->
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1">
        <!-- Your third form line -->
    </LinearLayout>
        <!-- .... -->

</LinearLayout>

此布局将生成(当然没有颜色:))。线条(彩色框)的比例是固定的,但它的大小与屏幕高度基本一致。填充父项和布局权重实现了这一点


如果你想使用RelativeLayout,你必须通过JAVA编程设置空白和高度(一些解释)

好吧,是的,但是我希望我的布局能够通过固定EditText字段之间的边距来调整一点,并稍微增加它们的高度,这样空白就不会那么普遍了。有什么建议吗?谢谢您需要定义“更适合大屏幕”的外观&在布局的早期阶段,UI的哪些部分应该拉伸/收缩。如果你使用布局等,Android会做你想做的事情correctly@zapl谢谢,我这么做了。例如,我希望各个组件之间的边距增加,以便将空白空间最小化。我不需要它看起来和320x480一样,480x800在相对意义上更长。我只是想通过调整边距来最大限度地减少空白。例如,您可以在行之间添加空的
视图
s,让它们根据权重进行缩放,或者根据配置定义不同的边距。谢谢!但是等一下,我不能将权重与
RelativeLayout
一起使用?你不能。如我所知,如果您想保持RelativeLayout(这不是一个坏主意),您必须使用自定义视图组。在我文章的最后有一个例子。可以从onMeasure()获取容器的高度。getChildNum提供项目数(行),因此lineheight=containerheight/itemnum。然后,在onLayout()函数中,可以按计算的维度放置每个子对象。