Android:设计布局问题

时间:2013-07-27 10:27:58

标签: android layout size

我已准备好许多教程,我已经第3次阅读http://developer.android.com/guide/practices/screens_support.html,但我仍然不知道如何设置布局以兼容多个屏幕。

在Android docs上我发现了这个:

  

例如,layout_width =“100dp”的视图测量100个像素   中等密度屏幕宽,系统可扩展至150   高密度屏幕上的像素宽,以便视图占用   屏幕上的物理空间大致相同。

好的,让我们看一个例子: enter image description here

正如您所看到的,分辨率是相同的(480x800),但视图直到最后都没有填充。我知道我应该使用fill_parent或match_parent,但这仅用于测试目的。

XML布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:weightSum="100"
        android:orientation="vertical" >

        <RelativeLayout
            android:layout_width="320dp"
            android:layout_height="0dp"
            android:layout_weight="45"
            android:background="@drawable/bg_red" >

        </RelativeLayout>

        <RelativeLayout
            android:layout_weight="10"
            android:layout_width="fill_parent"
            android:layout_height="0dp" >
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="320dp"
            android:layout_height="0dp"
            android:layout_weight="45"
            android:background="@drawable/bg_blue" >

        </RelativeLayout>

    </LinearLayout>

</RelativeLayout>

1 个答案:

答案 0 :(得分:4)

Dp或dip(density-independent pixels)会考虑设备的密度。与密度无关的像素的目的是在任何密度的屏幕上以相同的物理维度显示视图。

下降等于实际像素的数量取决于设备的密度:

  • 如果您有mdpi设备,则一个dpi等于一个像素(因子= 1)
  • 在hdpi设备上,一个dpi是两个像素,应该是 物理尺寸大约与mdpi上的一个像素一样大。 (因子= 2)

在实际设备上,这一切都变得更加清晰:

您的480 * 800 hdpi设备的物理尺寸将小于480 * 800 mdpi设备。因此,当视图填满hdpi设备的屏幕时,具有相同物理尺寸(dp)的视图将不会填满mdpi设备上的屏幕。