Je devrais aligner deux TextViews sur une seule voie. Mais le premier TextView doit être rogné lorsqu'il est trop long.

<RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <TextView
                    android:id="@+id/subtitle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:maxLines="1"
                    tools:text="subtitle" />

                <TextView
                    android:id="@+id/date"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_toRightOf="@+id/subtitle"
                    android:maxLines="1"
                    tools:text=" * date" />
            </RelativeLayout>

J'ai un problème. Lorsque le premier TextView a un texte trop long, le second TextView est masqué.

Premier cas. Sous-titre court

Deuxième cas. Long sous-titre. Le deuxième TextView est rogné

Les deux vues doivent être placées sur le côté gauche lorsque le texte est court. Mais le premier texte doit être rogné lorsque le texte est long.

1
MonStar 24 janv. 2017 à 11:44

9 réponses

Meilleure réponse

Pour réaliser les deux, vous avez besoin de wrap_content dans la mise en page wrap_content dans le deuxième TextView et de la combinaison width: 0dp et layout_weight: 1 dans le premier TextView . De cette façon, le deuxième TextView sera toujours assez grand pour afficher le contenu et le premier TextView s'étendra jusqu'à l'espace disponible à côté.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/subtitle"
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:layout_weight="1"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="this text is tool long so it will be cut. this text is tool long so it will be cut." />

    <TextView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:maxLines="1"
        android:text=" * date" />
</LinearLayout>

enter image description here

1
Björn Kechel 24 janv. 2017 à 09:15

Utiliser la mise en page avec weight:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
xmlns:android="http://schemas.android.com/apk/res/android">

<TextView
    android:id="@+id/subtitle"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:maxLines="1"
    android:text="subtitlevvnvnvnnvnvnvnvnvnvnvnvnvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv"
    android:ellipsize="end"
    android:layout_weight="0.5" />

<TextView
    android:id="@+id/date"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:maxLines="1"
    android:text=" * date"
    android:layout_weight="0.5" />
</LinearLayout>

Production:

enter image description here

1
W4R10CK 24 janv. 2017 à 08:54

Faites ceci Cela peut aider à taille égale. Je leur ai donné le poids de la mise en page, vous pouvez le modifier et ajuster les vues de texte en conséquence. vous pouvez en savoir plus sur l'épaisseur de mise en page linéaire ici

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >

        <TextView
            android:id="@+id/subtitle"
            style="@style/m4w_TextView.Subtitle"
            fontPath="fonts/InterstatePro-Light.otf"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:maxLines="1"
            android:ellipsize="end"
            android:layout_weight="1"
            tools:text="subtitle" />

        <TextView
            android:id="@+id/date"
            style="@style/m4w_TextView.Subtitle"
            fontPath="fonts/InterstatePro-Light.otf"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:ellipsize="end"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/subtitle"
            android:maxLines="1"
            tools:text=" * date" />
    </LinearLayout>

</LinearLayout>
0
A.s.ALI 24 janv. 2017 à 08:50
<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/subtitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight = 1
                tools:text="subtitle" />

            <TextView
                android:id="@+id/date"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight = 1
                tools:text=" * date" />
        </LinearLayout >
0
Damanpreet Singh 24 janv. 2017 à 08:53

Essayez de remplacer RelativeLayout par LinearLayout et ajoutez layout_weight=1 pour les deux TextViews

Remplacer par:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView
        android:id="@+id/subtitle"
        style="@style/m4w_TextView.Subtitle"
        fontPath="fonts/InterstatePro-Light.otf"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:maxLines="1"
        tools:text="subtitle" />

    <TextView
        android:id="@+id/date"
        style="@style/m4w_TextView.Subtitle"
        fontPath="fonts/InterstatePro-Light.otf"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_toRightOf="@+id/subtitle"
        android:maxLines="1"
        tools:text=" * date" />
</LinearLayout>
0
AbhiJW10 24 janv. 2017 à 09:00

Essayez le code ci-dessous

 <LinearLayout
    android:layout_width="match_parent"
    android:weightSum="2"
    android:orientation="horizontal"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/subtitle"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:layout_weight="1"
        android:ellipsize="end"
        tools:text="subtitle  df  ds fgfg cvb vbcfvnb cbxfcb" />

    <TextView
        android:id="@+id/date"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxLines="1"
        tools:text=" * date" />
</LinearLayout>
0
Meenal 24 janv. 2017 à 08:54

Essayez ce code, il peut vous aider

  <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/subtitle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:maxLines="1"
            android:layout_weight="1"
            tools:text="ajay bhimani this is practice"/>

        <TextView
            android:id="@+id/date"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/subtitle"
            android:maxLines="1"
            android:layout_weight="1"
            tools:text=" * date"/>
    </LinearLayout>
0
AJay 24 janv. 2017 à 08:53

Ajouter un rembourrage à la fois dans TextView

android:paddingLeft="10dp"
            <TextView
                android:id="@+id/subtitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:maxLines="1"
                android:paddingLeft="10dp"
                tools:text="subtitle" />

            <TextView
                android:id="@+id/date"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@+id/subtitle"
                android:maxLines="1"
                android:paddingLeft="10dp"
                tools:text=" * date" />
        </RelativeLayout>
0
sasikumar 24 janv. 2017 à 08:49

Essayez le code ci-dessous. Il vous suffit de placer l'élément de date en premier, puis le sous-titre dans une disposition relative.

<RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

<TextView
                android:id="@+id/date"
                android:layout_width="30dp"
                android:layout_height="wrap_content"
                android:maxLines="1"
                tools:text=" * date" />

            <TextView
                android:id="@+id/subtitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:maxLines="1"
                android:layout_toLeftOf="@+id/date"
                tools:text="subtitle" />


        </RelativeLayout>
0
UMESH0492 24 janv. 2017 à 10:19