2016-11-15 3 views
2

Ich habe Leitlinie 60% von oben und LinearLayout mit Boden beschränken, um diese Richtlinie (so mein LinearLayout wird 60% des Bildschirms). Jetzt muss ich die Hälfte von CardView unter das LinearLayout setzen (Screenshot hinzugefügt).Android Constraint von Zentrum

CardView Höhe ist wrap_content, Ursache wird dynamisch hinzugefügt, so dass ich weiß Höhe nicht und kann etwas wie Marge unten -50dp nicht verwenden.

Das ist, was ich habe:

Thats what I have

ich so etwas brauchen:

enter image description here

ich nicht Zukunft finden kann wie durch Zentrum beschränken. Kannst du mir bitte helfen.

Antwort

-1

Der einfachste Weg besteht darin, dies zur Laufzeit in Code zu tun. Warten Sie, bis die Höhe berechnet wurde, und fügen Sie dann einen oberen Rand von -5 * Höhe hinzu.

4

Sie müssen nur den oberen Anker von cardview festlegen, der mit dem unteren Anker des linearen Layouts (oder mit der Richtlinie) verbunden werden soll, und das gleiche für den unteren Anker tun. Wenn sowohl der obere als auch der untere Anker auf dasselbe Ziel zeigen, wird der Kartenausschnitt vertikal auf diesem Ziel zentriert. Je nach dem, was Sie tun, benötigen Sie dieses lineare Layout möglicherweise auch nicht. Überprüfen Sie die chains functionality in ConstraintLayout.

enter image description here

<android.support.v7.widget.CardView 
    android:layout_width="300dp" 
    android:layout_height="200dp" 
    tools:layout_editor_absoluteX="28dp" 
    app:layout_constraintBottom_toTopOf="@+id/guideline" 
    app:layout_constraintTop_toTopOf="@+id/guideline" 
    tools:layout_editor_absoluteY="156dp" /> 

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