4
votes

TextView sort de l'écran avec contrainte

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>

 entrez la description de l'image ici


2 commentaires

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.


3 Réponses :


2
votes

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.


2 commentaires

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



13
votes

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"


0 commentaires

0
votes

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" />


0 commentaires