10

私が制約しているビューの可視性がなくなった場合、以下のxmlを使用すると無視されます。ConstraintLayoutのマージンが機能しない

これは、この時点での最新のレイアウトlibのバージョンで発生しcom.android.support.constraint:constraint-layout:1.0.0-beta4

例:

tvMessageivCommentImagevisibleある - llLeftActionsllRightActions上16dpのトップマージンが正常に動作しています。 ivCommentImagegoneの場合、余白は無視されます。

<android.support.v7.widget.CardView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

<android.support.constraint.ConstraintLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="16dp"> 

<!-- some more views here --> 

    <TextView 
     android:id="@+id/tvMessage" 
     style="@style/SocialFeed.Description" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="16dp" 
     android:layout_marginLeft="16dp" 
     android:layout_marginRight="16dp" 
     android:layout_marginStart="16dp" 
     android:layout_marginTop="16dp" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/ivProfile" 
     app:layout_goneMarginTop="0dp" 
     tools:text="@string/lorem_ipsum_140chars"/> 

    <android.support.v7.widget.AppCompatImageView 
     android:id="@+id/ivCommentImage" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="16dp" 
     android:adjustViewBounds="true" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/tvMessage" 
     app:layout_goneMarginTop="0dp" 
     /> 

    <android.support.constraint.Guideline 
     android:id="@+id/gCenter" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     app:layout_constraintGuide_percent="0.5"/> 

    <LinearLayout 
     android:id="@+id/llLeftActions" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="16dp" 
     android:gravity="center_vertical|left" 
     android:orientation="horizontal" 
     app:layout_constraintLeft_toLeftOf="@+id/tvMessage" 
     app:layout_constraintRight_toLeftOf="@+id/gCenter" 
     app:layout_constraintTop_toBottomOf="@+id/ivCommentImage" 
     app:layout_goneMarginTop="0dp" 
     /> 

    <LinearLayout 
     android:id="@+id/llRightActions" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="16dp" 
     android:gravity="center_vertical|right" 
     android:orientation="horizontal" 
     app:layout_constraintLeft_toLeftOf="@+id/gCenter" 
     app:layout_constraintRight_toRightOf="@+id/tvMessage" 
     app:layout_constraintTop_toBottomOf="@+id/ivCommentImage" 
     app:layout_goneMarginTop="0dp"/> 


</android.support.constraint.ConstraintLayout> 

</android.support.v7.widget.CardView> 

答えて

6

意図したとおりにそれは完全に働いている - あなたは@id/llLeftActions@id/llRightActionslayout_goneMarginTop="0dp"を追加したことに注意してください...

なくなっとして、彼らは(@id/ivCommentImage)を指しているウィジェットがマークされている場合ことを意味し、マージントップ接続に使用されるのは... 0dpで、16dpのマージンではありません。それは、それらの属性がここにあるのです! :)

visibility behaviorgone margin attributes

1
<TextView 
    android:id="@+id/textView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Available chats" 
    tools:layout_editor_absoluteX="1dp" 
    tools:layout_editor_absoluteY="1dp" /> 

<ListView 
    android:id="@+id/listChats" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    app:layout_constraintTop_toBottomOf="@+id/textView"/> 

上のドキュメントを確認し、エッジの周りに制約を追加すると、制約の作業を行い、最後の行に注意してください。

Studioでデザインビューを使用して、オブジェクト間に制約をドラッグアンドドロップすることもできます。

関連する問題