2011-09-13 6 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에서 유효하다고해서 그것이 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> 

이 아마도 당신이 뭔가를해야 할 수도 있습니다.

관련 문제