簡體   English   中英

android:height 和 android:layout_height 有什么區別?

[英]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屬性,但我找不到文檔中的差異,特別是當它所操作的元素也設置了填充和/或邊距的值時,如何計算每個屬性。

是否有任何可用的資源來討論它,或者有人可以在這里解釋它?


編輯(問題摘要):

可能是我使用它的情況導致了問題,因此可以忽略上面的示例(我在一個新項目中嘗試並從屬性組合中得到了不同的結果)。

但我原來的問題仍然適用(有些重疊):

  1. 它們之間有什么區別?
  2. 什么時候應該使用一個?
  3. 一個的使用會影響另一個的使用嗎?
  4. 使用一個是否對可以控制視圖的測量尺寸的其他屬性有影響,例如填充或邊距?

編輯 2(旁白):

與新項目相比,它有助於了解我的初始情況:

我有一個將windowActionBarOverlay設置為 true 的活動,所以我讓我的內容在(半透明)ActionBar 下流動。

我還使用了面包塊,它們現在出現在 ActionBar 下。 Ben Weiss 建議我將 Crouton 附加到不同的 ViewGroup,但我不確定將它附加到哪個 ViewGroup。

相反,我提供了一個自定義視圖(在需要時會膨脹)作為 Crouton(問題第一部分中的 TextView),頂部填充等於 ActionBar 的頂部填充,所以現在它垂直顯示在 ActionBar 下方正常(另一天有其他問題)。

問題 1:

(它們之間有什么區別?):

所有以 »layout_« 開頭的屬性都是 視圖所屬的ViewGroup的提示。 為此,每個android.view.ViewGroup都有一組LayoutParams 小部件本身不使用它們。

android:height參數是android.view.View初始大小。 但是如果 View 是ViewGroup的一部分,那么ViewGroup將根據其布局規則調整對象的大小。

順便說一句:較新的 API 有一個新的android:minHeightandroid:maxHeight屬性來闡明程序員的意圖。

請注意,如果您不設置android:height ,視圖將自行計算大小。 大多數情況下,這是正確的做法。

問題2

(什么時候應該使用一個?):

ViewGroup是抽象的——這個問題的答案取決於你實際使用的是哪個子類。

請注意, WRAP_CONTENT告訴使用ViewGroup使用android:height 這意味着這是在您的示例中使用的正確參數。

問題 3

(使用一個會影響另一個的使用嗎?):

是的——而且是遞歸的。 TableLayout將讀取和寫入android:width屬性以找出最寬的對象並將所有其他對象調整為它的大小。

問題 4

(使用一個是否對可以控制視圖的測量尺寸的其他屬性有影響,例如填充或邊距?)

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM