Android:设计布局问题

标签 android layout size

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

在 android 文档上我发现了这个:

For instance, a view with a layout_width="100dp" measures 100 pixels wide on medium-density screen and the system scales it up to 150 pixels wide on high-density screen, so that the view occupies approximately the same physical space on the screen.

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

如您所见,分辨率相同 (480x800),但 View 直到结束才填满。我知道我应该使用 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>

最佳答案

Dp 或 dip(密度无关像素)考虑了设备的密度。密度无关像素的目的是在任何密度的屏幕上以相同的物理尺寸显示 View 。

一次下降等于多少个实际像素取决于您设备的密度:

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

在实际设备上一切都会变得更清楚:

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

关于Android:设计布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17896747/

相关文章:

Android:如何允许在非触摸屏设备上的 ListView 中导航?

html - 正确对齐图片说明

java - addView 在自定义 FrameLayout 中不可见但可点击

python - Matplotlib:循环中创建的第一个绘图未使用 rcParams 中指定的 'figsize' 保存

关联值是引用类型时的 Swift 枚举大小

c++ - 通常,使用C++模板会产生比使用宏执行相同代码更大的可执行文件吗?

java - 在android中从另一个音频文件中减去一个音频文件

Android:版本 21 未出现在 SDK 管理器中

android - 检测应用程序前台事件

r - ggplot2 的组合图(不在单个图中),使用 par() 或 layout() 函数?