2011-09-13 5 views
22

添付の画像では、ボタンの列を画像の高さに合わせたいが、ボタンの列の高さを最小にしたい。minHeightは何ですか?

これは画像の高さに正しく一致しますが、minHeightは考慮しません。ボタンを押し下げます。

私は、ボタンの列にこれらのプロパティを設定しています:

<LinearLayout 
    ... 
    android:layout_alignTop="@+id/image" 
    android:layout_alignBottom="@+id/image" 
    android:minHeight="150dp" 
    > 

enter image description here

答えて

38

を私はすべてのあなたの正確な要件を知らないが、あなたがほとんどのような別の層でこれを解決することができそうですあなたの図で。外側のレイアウトに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> 
+2

しかし、多くのレイアウトを使用すると、起動時にアプリが遅くなることがあります。スタートアップ時にレイアウトが大量のメモリを必要としているため、スタートアップに必要なメモリが再び解放されるまで、ガベージコレクションによってアプリケーションの速度が低下する可能性があります。そして、はい、私はその問題を抱えていますが、現在私は代わりにRelativLayoutに切り替えようとしています。 – Martin

6

トリッキーな質問は、それがTextView.setMinHeightを呼び出すため - しかし、あなたはTextViewを使用していません。

一般的にandroid:minHeightは実際には何かをしますが、あなたの特別なケースではありません。

+5

これは元の質問に納得のいく回答でした。それはおそらくユーザーが最終目標を達成するのには役立ちませんが、それにもかかわらず面白いと感じました。 – jwir3

+1

これは完全に間違っています。一般的にビューのminHeightは有効な属性です。そのプログラム上の同等のものはhttps://developer.android.com/reference/android/view/View.html#setMinimumHeight(int) –

+1

@David Liuです。XMLで属性が有効であっても、その属性がビュー。 属性がビューに格納されている場合でも、アクティブなレイアウトマネージャで実際に使用されているわけではありません。 さらに楽しくするためには、 'TextView.setMinHeight'と' View.setMinimumHeight'があります。 – Martin

0

私の他の答えはまだ有効ですが、今日ではConstraintLayoutの利点があります。元のポスターはこの問題を克服して以来長いと確信していますが、将来のユーザーのために:ViewGroupの余分なレイヤーなしで同じ結果を達成できます。このような何か:大きな画像を処理するためにImageView

app:layout_constrainedWidth="true" 

が、私はそれをテストしていない:

<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> 

おそらくあなたのような何かが必要な場合があります。

関連する問題