在附圖中,我希望按鈕的列與圖像的高度相匹配,但我也希望按鈕列的高度最小。做minHeight做什麼?
它正確匹配圖像的高度,但不尊重minHeight,並會按下按鈕。
我爲按鈕欄設置這些屬性:
<LinearLayout
...
android:layout_alignTop="@+id/image"
android:layout_alignBottom="@+id/image"
android:minHeight="150dp"
>
在附圖中,我希望按鈕的列與圖像的高度相匹配,但我也希望按鈕列的高度最小。做minHeight做什麼?
它正確匹配圖像的高度,但不尊重minHeight,並會按下按鈕。
我爲按鈕欄設置這些屬性:
<LinearLayout
...
android:layout_alignTop="@+id/image"
android:layout_alignBottom="@+id/image"
android:minHeight="150dp"
>
我不知道你所有的具體要求,但似乎你可以與其他層解決這個很像在你的圖中。在外部佈局上設置minHeight
,然後在內部設置fill_parent
/match_parent
。也許是這樣的:
<LinearLayout
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:minHeight="150dp">
<LinearLayout
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="wrap_content">
</LinearLayout>
<ImageView />
</LinearLayout>
棘手的問題,因爲它要求TextView.setMinHeight - 但你不使用TextView。
因此,一般android:minHeight
確實做了一些事情,但不是在你的具體情況。
這是對原問題的一個很好的回答。它可能不會幫助用戶達到最終目標,但我發現它很有趣。 – jwir3
這完全不正確。一般來說minHeight對於視圖來說是一個有效的屬性。它的編程等效是https://developer.android.com/reference/android/view/View.html#setMinimumHeight(int) –
@David Liu該屬性在XML中有效並不意味着它存儲在視圖。 即使該屬性存儲在視圖中,也不表示該值實際上是由活動佈局管理器使用的。 爲了讓它更有趣:有一個'TextView.setMinHeight'和一個'View.setMinimumHeight' – Martin
雖然我的其他答案仍然有效,但現在我們有ConstraintLayout
的好處。我確定原來的海報早已過去了這個問題,但爲了未來用戶的緣故:如果沒有額外的ViewGroup
秒,您可以達到相同的結果。事情是這樣的:
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="150dp">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:text="Button1"
app:layout_constraintBottom_toTopOf="@+id/button2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:text="Button2"
app:layout_constraintBottom_toTopOf="@+id/button3"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button1" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:text="Button3"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button2" />
<android.support.constraint.Barrier
android:id="@+id/barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="end"
app:constraint_referenced_ids="button1,button2,button3" />
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/barrier"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
也許你可能需要類似:
app:layout_constrainedWidth="true"
爲ImageView
處理更大的圖像,但我沒有測試它。
但請記住:如果您使用多種佈局,您的應用程序在啓動時可能會變得緩慢。似乎佈局在啓動時需要大量內存,這可能會觸發垃圾收集,從而減慢應用程序的運行速度,直到啓動所需的內存再次釋放爲止。是的,我有這個問題,目前我嘗試切換到RelativLayout。 – Martin