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?
3 Réponses :
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.
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.
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.