2014-06-15 72 views
-1

我已經使用了相對佈局,在dp中完成了所有測量,併爲所有各種像素密度創建了圖像。儘管使用密度獨立像素,但我的圖像並未適合縮小顯示器。爲什麼我的密度獨立像素尺寸不起作用?爲什麼我的xml佈局不適用於多個屏幕?

我打算讓ldpi看起來像下面的xldpi。

xldpi顯示(我多麼希望我的顯示器看起來) xldpi Display

LDPI顯示

lpdi

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

屏幕密度與屏幕尺寸無關,而且您的預覽也在變化。除此之外,你需要解釋你期望看到什麼,以及如何綁定到你的XML佈局。 – CommonsWare

+0

我已經添加了我所瞄準的目標,它確實出現了我迷惑了兩個概念。我如何調整不同的尺寸?我從在線教程和閱讀文檔中學到的一切似乎都只是考慮了密度調整。 – Deco

+1

「我如何調整不同的尺寸?」 - 在合適的資源目錄中爲這些尺寸設置不同的佈局(例如,'res/layout /'用於較小的屏幕,'res/layout-w640dp /'用於當前寬度爲4「或更高的屏幕)。請參見http:// developer.android.com/guide/practices/screens_support.html。或者,使用Orlowski先生在他的回答中概述的技術,考慮更改尺寸的單一佈局 – CommonsWare

回答

-1

DP並不代表顯示像素,但是密度獨立像素。說並不是所有的顯示器都能提供相同數量的dp,因此如果超過設備的dp分辨率,佈局將不會按預期呈現。

+0

我糾正了我的問題。謝謝 – Deco

2

如果你希望容器收縮您不能指定精確的尺寸,否則你的元素

android:layout_width="85dp" 
android:layout_height="85dp" 

將始終85dp。如果屏幕尺寸較高,那麼您會像第一次屏幕截圖一樣有空隙,當您屏幕較小時,某些項目可能會被裁剪或甚至完全脫離屏幕。

在你的情況下,也許你應該將所有寬度設置爲match_parent,然後在每個元素上設置layout_weight="1",這樣它就會傳播。如果你想使用RelativeLayout你需要把所有ImageViews到額外LinearLayout做出正確使用layout_weight

+0

dp單元是否不適應不同尺寸的屏幕?從我讀到的文檔中我瞭解到,對於720像素的屏幕,1dp會跨越2像素,而對於360像素的屏幕,1dp將包含1像素? – Deco

+0

@Deco:「dp單元不適應不同尺寸的屏幕嗎?」 - 不,它們適應不同的密度* – CommonsWare

+0

我想要每個元素之間的差距我試過使用線性佈局作爲容器,但是我的邊距面臨着我現在元素尺寸面臨的同樣的問題 是否可以設置我的元素位置和尺寸基於屏幕總寬度的x%?使用多個佈局文件更常見的方法來解決這個問題?我想念xib文件:p – Deco