TextView не переносит содержимое, когда текст переносится во второй строке

В следующем почему TextView у вас есть дополнительное место, когда текст переносится на вторую строку (выделено желтой рамкой на изображении ниже)? Как я могу удалить это?

Расположение:

<?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:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="2"
        android:background="@color/green"
>

    <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:gravity="center"
            android:layout_weight="1"
        >

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:padding="0dp"
                android:layout_gravity="center"
                android:text="THIS IS FOOOOOOOOOOOOOOO"
                android:background="@color/red"
        />
    </LinearLayout>

    <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:gravity="center"
            android:layout_weight="1"

    >

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:padding="0dp"
                android:layout_gravity="center"
                android:text="THIS IS FOOOOOOOOOOOOOOO"
                android:background="@color/red"
        />
    </LinearLayout>

</LinearLayout>

2 ответа

Могли бы попробовать грубую силу. Сначала разбейте текст на строки. Зациклите их, измерьте ширину, если не превышает ширину textView, добавьте к строителю строки, если больше ширины textView, измерьте символ за символом, если не превысите, добавьте к построителю строки, иначе добавьте "\n" к построителю строки. Получите строку этим компоновщиком и установите его в textView.

Фактическая причина этого заключается в том, что вы указали свойство android:layout_weight для LinearLayout. В соответствии с этим разделение макета происходит удалить Android: layout_weight и проверить следующим образом

<?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:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@color/green">

    <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:gravity="center">

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:padding="0dp"
                android:layout_gravity="center"
                android:text="THIS IS FOOOOOOOOOOOOOOO"
                android:background="@color/red"
        />
    </LinearLayout>

    <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:gravity="center">

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:padding="0dp"
                android:layout_gravity="center"
                android:text="THIS IS FOOOOOOOOOOOOOOO"
                android:background="@color/red"
        />
    </LinearLayout>

</LinearLayout>
Другие вопросы по тегам