我使用了相对布局,在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" />
答案 0 :(得分:2)
如果您希望容器缩小,则无法指定确切的尺寸,否则您的元素
android:layout_width="85dp"
android:layout_height="85dp"
总是需要85dp。如果屏幕尺寸如果更高那么你会有第一次屏幕截图的间隙,你得到更小的屏幕,某些项目可以剪裁甚至完全关闭屏幕。
在您的情况下,您可能应将所有宽度设置为match_parent
,然后在一个容器中的每个元素上设置layout_weight="1"
,以便它可以传播。如果您想使用RelativeLayout
,则需要将所有ImageViews
添加到其他LinearLayout
中,以正确使用layout_weight
答案 1 :(得分:-1)
dp不代表显示像素,而是代表与密度无关的像素。表示并非所有显示器都提供相同数量的dp,因此如果超过设备的dp分辨率,则不会按预期呈现布局。