Android:支持同一屏幕尺寸类型的多种屏幕尺寸

时间:2012-08-19 13:26:18

标签: android android-layout

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

传统上我的项目布局,文件夹支持各种尺寸layoutlayout-smalllayout-largelayout-xlarge

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

在320x480(我的设计):

enter image description here

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

enter image description here

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

有任何建议或帮助吗?在最糟糕的情况下,有没有办法设计一个专门为480x800屏幕启动的布局(因为它们似乎是最常见的)?感谢。

3 个答案:

答案 0 :(得分:1)

320:480具有与480:800不同的比率。因此后者相对于水平空间仅具有比前者更多的垂直空间。所以你的布局没有任何问题。

答案 1 :(得分:1)

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

对于您显示的屏幕,您需要使用权重而不是精确的dp数量来指定EditText组件的宽度。你可以找到很多关于如何做到这一点的文章,here是一个开始。

答案 2 :(得分:1)

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

<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>

这种布局会产生this(当然没有颜色:))。线条(彩色框)的比例是固定的,但它的尺寸与屏幕高度相符。 fill_parent和layout_weight可以解决问题。

如果你想使用RelativeLayout,你必须以编程方式从JAVA设置空格和高度(一些解释here