[英]What's the difference between android:height and android:layout_height?
<TextView
android:layout_width="match_parent"
android:layout_height="48dp"
android:paddingTop="48dp"
android:text="Test"
/>
我希望 TextView 的測量高度為 96dp,無論“測試”占用了多少空間(高度方面)(希望它被切斷)。
相反,我得到了填充的完整“測試”+ 48dp。
我可以為layout_height
任何有效值並獲得相同的結果。
要獲得 96dp 的高度,我需要:
<TextView
android:layout_width="match_parent"
android:layout_height="<any valid value>"
android:height="48dp"
android:paddingTop="48dp"
android:text="Test"
/>
同樣,我可以將layout_height
作為任何有效值(但它需要作為必需屬性存在)。
我從未在 XML 中使用過height
屬性,但我找不到文檔中的差異,特別是當它所操作的元素也設置了填充和/或邊距的值時,如何計算每個屬性。
是否有任何可用的資源來討論它,或者有人可以在這里解釋它?
可能是我使用它的情況導致了問題,因此可以忽略上面的示例(我在一個新項目中嘗試並從屬性組合中得到了不同的結果)。
但我原來的問題仍然適用(有些重疊):
編輯 2(旁白):
與新項目相比,它有助於了解我的初始情況:
我有一個將windowActionBarOverlay
設置為 true 的活動,所以我讓我的內容在(半透明)ActionBar 下流動。
我還使用了面包塊,它們現在出現在 ActionBar 下。 Ben Weiss 建議我將 Crouton 附加到不同的 ViewGroup,但我不確定將它附加到哪個 ViewGroup。
相反,我提供了一個自定義視圖(在需要時會膨脹)作為 Crouton(問題第一部分中的 TextView),頂部填充等於 ActionBar 的頂部填充,所以現在它垂直顯示在 ActionBar 下方正常(另一天有其他問題)。
所有以 »layout_« 開頭的屬性都是 視圖所屬的ViewGroup的提示。 為此,每個android.view.ViewGroup
都有一組LayoutParams 。 小部件本身不使用它們。
android:height
參數是android.view.View
的初始大小。 但是如果 View 是ViewGroup
的一部分,那么ViewGroup
將根據其布局規則調整對象的大小。
順便說一句:較新的 API 有一個新的android:minHeight
和android:maxHeight
屬性來闡明程序員的意圖。
請注意,如果您不設置android:height
,視圖將自行計算大小。 大多數情況下,這是正確的做法。
ViewGroup
是抽象的——這個問題的答案取決於你實際使用的是哪個子類。
請注意, WRAP_CONTENT
告訴使用ViewGroup
使用android:height
。 這意味着這是在您的示例中使用的正確參數。
是的——而且是遞歸的。 TableLayout將讀取和寫入android:width
屬性以找出最寬的對象並將所有其他對象調整為它的大小。
android:padding
沒有,但android:layout_margin
。 請注意,邊距是一個布局參數,並非每個布局管理器都支持邊距。
有關詳細信息,請參閱邊距與填充。
更容易將所有寬度和高度屬性視為僅提示。 對象大小的最終決定權是使用的ViewGroup
的布局管理器。
通過稍微玩弄這個,我認為layout_height
是靈活的 - 首選高度,但仍會隨着內容擴展/收縮 - 並且height
是一個確定的值。
在您的情況下發生的情況是 TextView 環繞Test
文本,但仍使用 48dp paddingTop
屬性。
嗯,android_layout:height 指定 VIEW 的基本高度,而 android:height 指定對象的高度(例如,xml 中的按鈕)。
祝你好運! :)
android:height 使視圖正好有這么多像素高,而 android:layout_height 指定視圖的基本高度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.