2013-07-25 36 views
0

我想創建一個可縮放視圖。layout_weight和使用dp有什麼區別?

我應該選用線性佈局屬性:layout_weight

或使用layout_width:X DP? (這也是相對的而不像像素一樣)

有什麼區別?

+0

可能重複的[android:layout \ _weight是什麼意思?](http://stackoverflow.com/questions/3995825/what-does-androidlayout-weight-mean) –

回答

2

這非常依賴於確切的用例。

layout_weight取決於同一ViewGroup中其他視圖的數量和大小。

dp (density-independant pixels)取決於設備的密度。

通常,dp用於在具有不同屏幕密度的設備上以相同物理尺寸顯示視圖,而重量只是確保視圖填充其父視圖組的某個百分比。

1

這是我的理解,dp只是一個一般大小,你想要一個對象,而重量是定義多少空間,你想要採取的東西相對於其他東西共享相同的空間。

1

當您希望某些視圖佔據可用空間的三分之一(1/3)時,它可以更輕鬆地創建佈局。你如何通過layout_width實現這一點?但是,您可以使用weight屬性輕鬆實現此目的。

什麼更重量屬性使您佈局看起來相同的所有屏幕尺寸,甚至平板電腦。當你使用weight屬性時,情況並非如此,通常情況下,如果你這樣做,你將爲平板電腦開發一個單獨的佈局(我並不是說你應該這樣做,我只想指出差異)。

1

layout_widthlayout_height指定小部件的這兩個維度。您可以使用dp值以與設備無關的方式給出大小'

layout_weight指示如何分配LinearLayout中的任何額外空間。這意味着如果orientation設置爲horizontal,則LinearLayout將修改其包含的小部件的寬度。另一方面,如果orientation設置爲vertical,則LinearLayout將修改子部件的高度。

Overrall,layout_widthlayout_weight有不同的目的,所以問「我應該選哪個」是不恰當的。在垂直LinearLayout中,您可以輕鬆使用兩者。

1

DP並非真的相對,它只是一個密度無關的像素(因爲平板電腦/手機屏幕具有不同的像素密度)。

您可以使用layout_weight將控件縮放到例如無論屏幕有多大/多小,屏幕的1/3都是如此。

假設你有:

<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="horizontal"> 

    <View 
      android:layout_width="20dp" 
      android:layout_height="wrap_content"/> 

    <View 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="2"/> 

    <View 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1"/> 
</LinearLayout> 

的第一項將總是在所有不同的設備具有相同的寬度,第二個將填充剩餘空間的2/3,並且所述第三一個剩下的1/3。

這一切都取決於你想如何讓你的佈局可擴展(ui的哪些部分應該增長/縮小,哪些應該保持相同的大小)。

1

首先,android:layout_weight財產和dp之間沒有關係。

  • dp(密度無關的像素)基本上是一個度量單位。

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

    要計算像素和密度點,可以採用以下公式。

    px = dp * (metrics.densityDpi/160f);

    你可以看到所有here由Android支持的尺寸。

  • android:layout_weight定義了父佈局內每個視圖的「權重」。

    E.g.你有一個LinearLayout,它包含一個TextViewListView,它們的權重分別是.25和.75。這意味着您的TextView可以使用屏幕上可用空間的25%和其他75%的空間。

    確保最終總權重的總和等於1(100%)。