J'utilise ConstraintLayout
pour créer ci-dessous xml dans mon application.
Comme vous pouvez le voir, mon premier élément va bien, mais dans le second, certaines parties de mon textView
ne sont pas à l'écran!
Voici mon code XML
:
app:layout_constraintLeft_toLeftOf="parent"
Je sais que je peux résoudre ce problème en ajoutant la ligne ci-dessous à textView
, mais j'ai besoin que mon textView
soit wrapContent
.
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/ly_user" android:padding="8dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView app:layout_constraintRight_toRightOf="parent" android:id="@+id/im_user_icon" android:layout_width="@dimen/default_message_icon_size" android:layout_height="@dimen/default_message_icon_size" android:src="@drawable/user_pacific"/> <ImageView app:layout_constraintTop_toBottomOf="@+id/im_user_icon" app:layout_constraintRight_toLeftOf="@+id/im_user_icon" android:id="@+id/im_user_arrow" android:layout_width="30dp" android:layout_height="30dp" android:src="@drawable/arrow_bg1"/> <View android:id="@+id/view_user_guidLine" android:layout_width="1dp" android:layout_height="0dp" app:layout_constraintLeft_toLeftOf="@id/im_user_arrow" app:layout_constraintRight_toRightOf="@id/im_user_arrow"/> <TextView app:layout_constraintTop_toBottomOf="@+id/im_user_icon" app:layout_constraintRight_toLeftOf="@+id/view_user_guidLine" android:id="@+id/tv_user_message" android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="right" android:padding="8dp" android:minWidth="@dimen/default_message_textarea_width" android:minHeight="@dimen/default_message_textarea_height" android:background="@drawable/bg_right_text" android:textColor="@android:color/white"/> </android.support.constraint.ConstraintLayout>
3 Réponses :
Ajoutez ces lignes suivantes dans votre code dans votre TextView
app:layout_constraintWidth_percent="0.6"
la première ligne layout_constraintWidth_percent
correspond à 60% de la largeur de l'écran de votre téléphone. peut le changer selon vos besoins.
cela fonctionne mais tout le temps prend 0,6 d'écran, mais je veux que ce soit wrap_content
Je sais, mais j'ai besoin que mon texte soit enveloppé tout le temps
Vous pouvez définir la largeur de votre TextView
sur wrap_content
, mais pour l'empêcher de s'étendre en dehors de l'écran, vous devez également ajouter la contrainte de gauche et utiliser l'application : layout_constrainedWidth = "true"
pour appliquer des contraintes.
Maintenant, pour que TextView
reste à droite, vous devez ajouter app: layout_constraintHorizontal_bias = "1" , ce qui va l'aligner sur sa bonne contrainte.
Donc dans l'ensemble, ce sont les changements nécessaires pour le TextView
:
app:layout_constraintLeft_toLeftOf="parent" app:layout_constrainedWidth="true" app:layout_constraintHorizontal_bias="1" android:layout_width="wrap_content"
La réponse acceptée fonctionne mais de mon côté j'utilise android: layout_width = "0dp"
car mon TextView est au milieu de deux éléments.
<TextView android:id="@+id/my_id_text_view" android:layout_width="0dp" android:layout_height="wrap_content" android:text="@string/long_text" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/second_vertical_divider_view" app:layout_constraintStart_toEndOf="@+id/first_vertical_divider_view" app:layout_constraintTop_toTopOf="parent" />
Je pense que vous devriez aligner le conteneur de la vue texte en fonction de la largeur. Si cela est fait, TextView doit s'intégrer correctement.
En utilisant maxWidth, vous pouvez le faire. Je vois déjà que tu as postulé mais ça devrait marcher.