2013-10-01 22 views
-2
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="@color/gray" 
     android:orientation="vertical" > 

     <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/darkgray" 
     android:gravity="center" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/attenders" 
      android:layout_width="110dp" 
      android:layout_height="40dp" 
      android:layout_gravity="center" 
     android:background="@color/gray" 
     android:layout_marginRight="8dp" 
     android:text="Attenders" /> 

    <Button 
     android:id="@+id/send" 
     android:layout_width="110dp" 
     android:layout_height="40dp" 
     android:layout_marginLeft="8dp" 
     android:layout_gravity="center" 
     android:background="@color/gray" 
     android:text="Send IM" /> 
    </LinearLayout> 
</LinearLayout> 

這是我的代碼,但dp對於所有屏幕分辨率都無法正常工作。 建議plz,plz告訴我,如果我做錯了什麼密度像素(dp)對於所有分辨率都無法正常工作

+1

請詳細說明「不能正常工作」。它看起來怎樣? – josephus

+0

@Tahir ... tahir你見過我在下面給出的答案嗎? –

+1

@JosephusVillarey的問題是,當我使用dp設置按鈕的高度或寬度時,它不適合所有分辨率,即在小屏幕上它看起來很大,而且在大屏幕上它看起來很小,而我知道當我們使用dp設置任何組件的高度和寬度,它根據屏幕分辨率自動轉換/調整。 – Tahir

回答

3

問題是,當我使用DP用於設置按鈕 的高度或寬度不變得千篇一律的所有決議案,即在小屏幕上看起來 大和大屏幕看起來小,而我知道,當我們使用 DP設置任何部件的高度和寬度,它會自動 轉換/根據屏幕分辨率調整

我從這個不解的是,就想到了使用dp代替px(或in,或cm) w ^不幸神奇地工作,使得它們在所有設備上都具有相同的物理尺寸,而不管該設備的密度(ppi)如何。

情況並非如此。

DP,或浸漬,如所解釋here,是

是基於屏幕的物理密度的抽象單元。 這些單位是相對於160 dpi(每英寸點數)屏幕,其中 1dp大致等於1px。

更dpi的一個屏幕(更密集的,這意味着更多的象素放入屏幕的方形區域)相比,具有160dpi負責繪製同一當屏幕將基本上畫出一個物理上更小的圖像,說,100x100 dpi圖像。

當在更高密度的屏幕上運行時,用於屏幕1dp的像素數將按照適合屏幕dpi的比例放大。

解決方案

有兩種簡單的方法讓自己的應用比例看在不同屏幕尺寸相同。

首先是使用不同的佈局文件夾(layout-ldpi,layout-mdpi等)。這種技術已被很好地解釋here。更值得推薦的方法是對每個密度使用不同的style值,因此您仍然可以維護一個layout文件夾,並將樣式指代爲測量。這可以使用相同的技術來完成,但是您可以使用values-ldpi,values-mdpi等。這對於跨屏幕尺寸的標準大小的UI元素很有用。

另一種方法是在整個佈局中使用weights。無論密度的屏幕大小如何,重量都會自動調整。如果你想要的話,這將會有很大的幫助,比如三列的寬度不一樣 - 你可以很容易地使用權重來判斷列A需要佔用屏幕可用寬度的40%,而B和C會有每個30%。這對跨屏幕尺寸的標準佈局非常有用。

一個乾淨的,很好編碼的應用程序將實現兩者。

+0

哦,謝謝你,真的很有幫助。我不能投票,因爲它需要15rep投票,對不起,但很好的回答它清除了我的一切。Thankyou – Tahir

+0

你去了,23代表。 – josephus

+0

不幸的是,在一個GridLayout中,權重根本沒有任何相關性,所以這是一個問題。 –

2

這是因爲你給固定的尺寸,只適合你正在使用的特定屏幕尺寸。因此,請嘗試避免使用靜態尺寸,並使用match_parent,wrap_content和fill_parent,以便您的佈局適合每種屏幕尺寸。

+0

但是當我們使用dp來設置任何組件的高度和寬度時,它會根據屏幕分辨率自動調整其大小。 – Tahir

+0

不,它不會...使用match_parent,wrap_content和fill_parent自動調整大小。 –

+0

http://developer.android.com/guide/practices/screens_support.html 閱讀這篇文章,你將會知道dp到底是什麼 – Tahir

相關問題