J'utilise Dans l'image ci-dessous, voici comment la mise en page est, avec tous les enfants
contraint comme vous le souhaitez. Par souci de clarté, l'image ci-dessous montre les contraintes de chaque enfant individuellement Voici comment il est rendu dans une Élément de liste déroulant: Code source de cette mise en page: Constraint Layout dans un élément de liste et j'ai des difficultés à le faire fonctionner correctement lorsque le code est compilé, bien qu'il s'affiche correctement dans le volet d'aperçu code >. Je peux utiliser Disposition relative , mais je veux toujours savoir pourquoi cela ne fonctionne pas car je suis confronté à ce comportement problématique dans de nombreux autres cas. vue recycleur :
<?xml version="1.0" encoding="utf-8"?>
<layout 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.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/ic_recent_activity">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/civ_user_avatar"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:src="@color/primary"/>
<TextView
android:id="@+id/tv_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:text="TextView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/civ_user_avatar" />
<TextView
android:id="@+id/tv_candidate_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginLeft="24dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text="TextView"
android:textAppearance="@style/TextTitle"
app:layout_constraintBottom_toTopOf="@+id/tv_candidate_email"
app:layout_constraintEnd_toStartOf="@+id/tv_status"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/civ_user_avatar"
app:layout_constraintTop_toTopOf="@+id/civ_user_avatar" />
<TextView
android:id="@+id/tv_candidate_email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text="TextView"
android:textAppearance="@style/TextSecondary"
app:layout_constraintEnd_toStartOf="@+id/tv_status"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/tv_candidate_name"
app:layout_constraintTop_toBottomOf="@+id/tv_candidate_name" />
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:text="Assessment : "
android:textColor="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/tv_candidate_name"
app:layout_constraintTop_toBottomOf="@+id/tv_candidate_email" />
<TextView
android:id="@+id/tv_assessment_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text="TextView"
android:textAppearance="@style/TextTitleBold"
app:layout_constraintBottom_toBottomOf="@+id/textView7"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/textView7"
app:layout_constraintTop_toTopOf="@+id/textView7" />
</android.support.constraint.ConstraintLayout>
</layout>
Y a-t-il une explication à ce comportement pour que je puisse comprendre comment la disposition des contraintes fonctionne réellement?
Mise à jour: Après avoir supprimé les contraintes inférieures des contraintes Imageview et textView7 , la mise en page se présente comme suit:
3 Réponses :
Pour toutes vos vues au lieu de match_parent
utilisez 0dp dans le xml ou sélectionnez match_constraint dans la vue de conception
Cela masque toutes les vues enfants
Veuillez essayer la mise en page ci-dessous:
<?xml version="1.0" encoding="utf-8"?>
<layout 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.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/civ_user_avatar"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="16dp"
android:src="@color/primary"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:text="TextView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/civ_user_avatar" />
<TextView
android:id="@+id/tv_candidate_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginLeft="24dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text="TextView"
app:layout_constraintEnd_toStartOf="@+id/tv_status"
app:layout_constraintStart_toEndOf="@+id/civ_user_avatar"
app:layout_constraintTop_toTopOf="@+id/civ_user_avatar" />
<TextView
android:id="@+id/tv_candidate_email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text="TextView"
android:textAppearance="@style/TextSecondary"
app:layout_constraintEnd_toStartOf="@+id/tv_status"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/tv_candidate_name"
app:layout_constraintTop_toBottomOf="@+id/tv_candidate_name" />
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:maxLines="1"
android:text="Assessment : "
android:textColor="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/tv_candidate_name"
app:layout_constraintTop_toBottomOf="@+id/tv_candidate_email" />
<TextView
android:id="@+id/tv_assessment_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text="TextView"
app:layout_constraintBottom_toBottomOf="@+id/textView7"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/textView7"
app:layout_constraintTop_toTopOf="@+id/textView7" />
</android.support.constraint.ConstraintLayout>
</layout>
Merci pour le message, mais les contraintes sur tv_candidate_email ne sont pas là, c'est pourquoi il est allé dans le coin supérieur gauche après la compilation
cachez-vous l ' e-mail du candidat tv par programmation?
Non, c'est visible. Se déplace vers le coin supérieur gauche (début) de l'écran en raison de l'absence de contraintes
Ouais, donne moi un moment
Mise à jour de la question après avoir supprimé les contraintes au bas du parent
D'où vient cette all Textview?
continuons cette discussion dans le chat .
Essayez d'utiliser des lignes directrices, par exemple horizontales, et vous pourrez y adapter toute la vue plus facilement. Si vous le combinez avec 2 ou 3 verticales (lignes directrices), il sera plus facile d'y arriver.
Pouvez-vous expliquer un peu comment cela résoudrait le problème? Je l'ai résolu en définissant le type de chaînage de la chaîne de vues et en donnant une hauteur constante aux Textviews .
Vous pouvez ajouter des lignes directrices verticales et horizontales pour le faire. Ce n'est ni difficile ni facile à comprendre. Cela fonctionne avec le pourcentage d'écran. Et vous pouvez attacher les contraintes à la ligne de guidage. suivez le lien
dans
"@ + id / textView7"changezapp: layout_constraintBottom_toBottomOf = "parent"avec n'importe quelle autre vue, car elle étend votre vue parent commematch_parentalors qu'en réalité c'estwrap_contentdéfinir tous les enfants de constraintlayou
layout_heightetlayout_widthà 0dp@ashwin Avez-vous obtenu la réponse ou elle est toujours là ??
@Hanzala J'ai supprimé les contraintes inférieures d'ImageView et de
@ + id / textView7, ce qui a amené les vues les plus hautes au bon endroit, mais les deux couches ci-dessous sont toujours en expansion commematch_parent code >puis recherchez plus de vues dans lesquelles vous avez ajouté
app: layout_constraintBottom_toBottomOf = "parent"comme dansciv_user_avatar