1
votes

Alignement de la disposition des contraintes Android

Je suis confronté à un problème avec ConstraintLayout.

J'ai une vue qui a 3 vues de texte T1, T2 et T3.

Condition préalable: T1, T2 a une marge supérieure de 4dp.

Problème: T3 doit être en haut doit être aligné sur la vue la plus haute. La condition est que T1 sera visible ou disparu selon certaines conditions.
Si T1 est visible, le margintop sera 8dp et lorsque T1 n'est pas visible T2 aura 12dp margintop.

<?xml version="1.0" encoding="utf-8"?>
<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="match_parent">
<TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="T1"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="4dp"
        android:text="T2"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />


    <TextView
        android:id="@+id/textView10"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:text="T3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@+id/textView" />


</android.support.constraint.ConstraintLayout>

Est-ce possible par XML ou dois-je configurer par programme?


0 commentaires

3 Réponses :


0
votes

Je ne connais pas exactement votre cas d'utilisation, mais vous pouvez faire en sorte que ce paramètre soit invisible au lieu de disparu.

View.GONE Cette vue est invisible et ne prend pas de place pour la mise en page.

Afficher.INVISIBLE Cette vue est invisible, mais elle occupe toujours de l'espace pour la mise en page.


0 commentaires

0
votes

Vous ne pouvez pas y parvenir uniquement avec XML, vous avez créé un écran en utilisant la disposition des contraintes.
Si vous souhaitez ajouter une logique pour modifier la position d'une vue sous certaines conditions, vous devrez l'écrire par programme.
Voici un bon fil de discussion sur le sujet.


0 commentaires

0
votes

Vous pouvez utiliser layout_goneMarginTop pour avoir une marge différente lorsque votre vue est GONE .

Vous pouvez également utiliser SequenceLayout pour une meilleure flexibilité dans la gestion de votre mise en page. Utilisez visibilitéElement sur chaque Span que vous souhaitez quitter lorsque votre vue associée a disparu.


0 commentaires