我想創建一個可縮放視圖。layout_weight和使用dp有什麼區別?
我應該選用線性佈局屬性:layout_weight
或使用layout_width:X DP? (這也是相對的而不像像素一樣)
有什麼區別?
我想創建一個可縮放視圖。layout_weight和使用dp有什麼區別?
我應該選用線性佈局屬性:layout_weight
或使用layout_width:X DP? (這也是相對的而不像像素一樣)
有什麼區別?
這非常依賴於確切的用例。
layout_weight
取決於同一ViewGroup中其他視圖的數量和大小。
dp (density-independant pixels)
取決於設備的密度。
通常,dp用於在具有不同屏幕密度的設備上以相同物理尺寸顯示視圖,而重量只是確保視圖填充其父視圖組的某個百分比。
這是我的理解,dp只是一個一般大小,你想要一個對象,而重量是定義多少空間,你想要採取的東西相對於其他東西共享相同的空間。
當您希望某些視圖佔據可用空間的三分之一(1/3)時,它可以更輕鬆地創建佈局。你如何通過layout_width實現這一點?但是,您可以使用weight屬性輕鬆實現此目的。
什麼更重量屬性使您佈局看起來相同的所有屏幕尺寸,甚至平板電腦。當你使用weight屬性時,情況並非如此,通常情況下,如果你這樣做,你將爲平板電腦開發一個單獨的佈局(我並不是說你應該這樣做,我只想指出差異)。
layout_width
和layout_height
指定小部件的這兩個維度。您可以使用dp
值以與設備無關的方式給出大小'
layout_weight
指示如何分配LinearLayout
中的任何額外空間。這意味着如果orientation
設置爲horizontal
,則LinearLayout
將修改其包含的小部件的寬度。另一方面,如果orientation
設置爲vertical
,則LinearLayout
將修改子部件的高度。
Overrall,layout_width
和layout_weight
有不同的目的,所以問「我應該選哪個」是不恰當的。在垂直LinearLayout
中,您可以輕鬆使用兩者。
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的哪些部分應該增長/縮小,哪些應該保持相同的大小)。
首先,android:layout_weight
財產和dp
之間沒有關係。
dp
(密度無關的像素)基本上是一個度量單位。
一個基於屏幕物理密度的抽象單位。 這些單位相對於160 dpi(每英寸點數)屏幕,其中1dp大約等於1px。
要計算像素和密度點,可以採用以下公式。
px = dp * (metrics.densityDpi/160f);
你可以看到所有here由Android支持的尺寸。
android:layout_weight
定義了父佈局內每個視圖的「權重」。
E.g.你有一個LinearLayout
,它包含一個TextView
和ListView
,它們的權重分別是.25和.75。這意味着您的TextView
可以使用屏幕上可用空間的25%和其他75%的空間。
確保最終總權重的總和等於1(100%)。
可能重複的[android:layout \ _weight是什麼意思?](http://stackoverflow.com/questions/3995825/what-does-androidlayout-weight-mean) –