web-dev-qa-db-fra.com

Multiline TextView avec width "wrap_content"

Je me demande comment faire en sorte que TextView affiche son contenu sur plusieurs lignes sans coder en dur la largeur dans le XML .

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:gravity="right"
        Android:orientation="horizontal">

        <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:singleLine="false"
            Android:text="Long multiline text"/>

        <TextView
            Android:textColor="@color/text_color"
            Android:layout_width="130dp"
            Android:layout_height="wrap_content"
            />

    </LinearLayout>

Toute pensée bienvenue.

EDIT: mon problème est que, lorsque le texte dépasse la largeur définie (car il atteint la fin de l'écran), une partie du texte ne s'affiche tout simplement pas. Je m'attendrais à ce que le texte soit divisé sur deux lignes

12
znat

Bien que je ne puisse pas reproduire le problème de non-wrapping, vous pouvez résoudre le problème de positionnement en utilisant une weight sur la première TextView. L'utilisation du XML suivant donne la sortie attendue dans la vue de présentation graphique dans Eclipse:

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:gravity="right"
    Android:orientation="horizontal">

    <TextView
        Android:layout_width="0dp"
        Android:layout_weight="1"
        Android:layout_height="wrap_content"
        Android:singleLine="false"
        Android:text="Long multiline text"/>

    <TextView
        Android:textColor="@color/text_color"
        Android:layout_width="130dp"
        Android:layout_height="wrap_content"
        />

</LinearLayout>
16
nhaarman

Ajoutez aussi

Android:minLines="2"
Android:scrollHorizontally="false"
1
Wafaa BEK

Tu pourrais essayer

Android:inputType="textMultiLine"

dans votre XML TextView. Cela a fonctionné pour moi.

0
Raimi bin Karim