Android 为什么我的xml布局不适用于多个屏幕?

Android 为什么我的xml布局不适用于多个屏幕?,android,android-relativelayout,Android,Android Relativelayout,我使用了相对布局,在dp中完成了所有测量,并为所有不同的像素密度创建了图像。尽管使用了与密度无关的像素,但我的图像并没有缩小到足够小的显示器。为什么我的密度无关像素尺寸不起作用 我的目标是使ldpi看起来像下面的xldpi xldpi显示器(我希望显示器的外观) ldpi显示 XML <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_

我使用了相对布局,在dp中完成了所有测量,并为所有不同的像素密度创建了图像。尽管使用了与密度无关的像素,但我的图像并没有缩小到足够小的显示器。为什么我的密度无关像素尺寸不起作用

我的目标是使ldpi看起来像下面的xldpi

xldpi显示器(我希望显示器的外观)

ldpi显示

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background" >

<en.deco.android.livehud.ImageButtonWithContextMenuInfo
    android:id="@+id/imageButton0"
    android:layout_width="85dp"
    android:layout_height="85dp"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@+id/nextHandButton"
    android:background="@null"
    android:scaleType="fitXY"
    android:src="@drawable/dotted_box"
    android:contentDescription="@string/acc_seatButton" />

<en.deco.android.livehud.ImageButtonWithContextMenuInfo
    android:id="@+id/imageButton1"
    android:layout_width="85dp"
    android:layout_height="85dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:background="@null"
    android:scaleType="fitXY"
    android:src="@drawable/dotted_box"
    android:contentDescription="@string/acc_seatButton" />

<en.deco.android.livehud.ImageButtonWithContextMenuInfo
        android:id="@+id/imageButton2"
        android:scaleType="fitXY"
        android:layout_width="85dp"
        android:layout_height="85dp"
        android:background="@null"
        android:src="@drawable/dotted_box"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:contentDescription="@string/acc_seatButton" />

<en.deco.android.livehud.ImageButtonWithContextMenuInfo
    android:id="@+id/imageButton3"
    android:scaleType="fitXY"
    android:layout_width="85dp"
    android:layout_height="85dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:background="@null"
    android:src="@drawable/dotted_box"
    android:contentDescription="@string/acc_seatButton" />

<en.deco.android.livehud.ImageButtonWithContextMenuInfo
    android:id="@+id/imageButton4"
    android:scaleType="fitXY"
    android:layout_width="85dp"
    android:layout_height="85dp"
    android:layout_alignParentBottom="true"
    android:layout_toRightOf="@+id/nextHandButton"
    android:background="@null"
    android:src="@drawable/dotted_box"
    android:contentDescription="@string/acc_seatButton" />

<en.deco.android.livehud.ImageButtonWithContextMenuInfo
    android:id="@+id/imageButton5"
    android:scaleType="fitXY"
    android:layout_width="85dp"
    android:layout_height="85dp"
    android:layout_alignParentBottom="true"
    android:layout_toLeftOf="@+id/nextHandButton"
    android:background="@null"
    android:src="@drawable/dotted_box"
    android:contentDescription="@string/acc_seatButton" />

<en.deco.android.livehud.ImageButtonWithContextMenuInfo
    android:id="@+id/imageButton6"
    android:scaleType="fitXY"
    android:layout_width="85dp"
    android:layout_height="85dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:background="@null"
    android:src="@drawable/dotted_box"
    android:contentDescription="@string/acc_seatButton" />

<en.deco.android.livehud.ImageButtonWithContextMenuInfo
        android:id="@+id/imageButton7"
        android:scaleType="fitXY"
        android:layout_width="85dp"
        android:layout_height="85dp"
        android:background="@null"
        android:src="@drawable/dotted_box"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:contentDescription="@string/acc_seatButton" />

<en.deco.android.livehud.ImageButtonWithContextMenuInfo
    android:id="@+id/imageButton8"
    android:scaleType="fitXY"
    android:layout_width="85dp"
    android:layout_height="85dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:background="@null"
    android:src="@drawable/dotted_box"
    android:contentDescription="@string/acc_seatButton" />

<en.deco.android.livehud.ImageButtonWithContextMenuInfo
    android:id="@+id/imageButton9"
    android:layout_width="85dp"
    android:layout_height="85dp"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@+id/nextHandButton"
    android:background="@null"
    android:scaleType="fitXY"
    android:src="@drawable/dotted_box" 
    android:contentDescription="@string/acc_seatButton"/>



<ImageView
    android:id="@+id/table"
    android:scaleType="fitXY"
    android:layout_width="370dp"
    android:layout_height="140dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:src="@drawable/table_test"
    android:contentDescription="@string/acc_table" />

<ImageButton
    android:id="@+id/nextHandButton"
    android:scaleType="fitXY"
    android:layout_width="70dp"
    android:layout_height="70dp"
    android:padding="15dp"
    android:layout_alignBottom="@+id/table"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="24dp"
    android:background="@null"
    android:contentDescription="@string/acc_nextHandButton"
    android:src="@drawable/next_button_test" />


如果您希望容器收缩,则无法指定精确的尺寸,因为否则您的元素会收缩

android:layout_width="85dp"
android:layout_height="85dp"
将始终需要85 DP。若屏幕尺寸更大,那个么你们会像第一张屏幕截图那个样出现间隙,你们得到的屏幕尺寸更小,某些项目可能会被剪掉,甚至完全脱离屏幕


在您的情况下,也许您应该将所有宽度设置为
match\u parent
,然后在一个容器中的每个元素上设置
layout\u weight=“1”
,这样它就会扩散。如果你想使用
RelativeLayout
,你需要将所有
imageview
放入额外的
LinearLayout
,以正确使用
布局权重

dp不代表显示像素,而是代表与密度无关的像素。说并非所有显示器都提供相同数量的dp,因此,如果您超过设备的dp分辨率,您的布局将无法按预期呈现。

屏幕密度与屏幕大小无关,您的预览将同时改变这两个方面。除此之外,您还需要解释您希望看到的内容,以及这些内容与XML布局的关系。我已经添加了我的目标,但我似乎混淆了这两个概念。我如何调整不同的尺寸?我从在线教程和阅读文档中学到的一切似乎都只是密度调整的原因。“我如何调整不同的尺寸?”——在合适的资源目录中为这些尺寸设置不同的布局(例如,对于较小的屏幕,
res/layout/
,对于当前宽度为4”或更高的屏幕,
res/layout-w640dp/
)。请参阅。或者,使用Orlowski先生在其回答中概述的技术,使用考虑到尺寸变化的单一布局。dp单元不适应不同尺寸的屏幕吗?从我阅读的文档中,我收集到,对于720px屏幕,1dp将跨越2px,而对于360px屏幕,1dp将包含1px?@Deco:“dp装置是否不适合不同尺寸的屏幕?"--不,它们适应不同的密度。我希望每个元素之间有间隙。我曾尝试使用线性布局作为容器,但我的边距面临与元素尺寸相同的问题。是否可以根据屏幕总宽度的x%设置元素位置和尺寸?使用多个布局文件是更常见的方法吗这个问题的答案是什么?我想念xib文件:p