Как распределить пробелы между текстовыми представлениями линейного макета, чтобы соответствовать разной длине текста - PullRequest
0 голосов
/ 28 января 2020

На изображении, прикрепленном ниже, красное поле представляет линейный макет.

В каждом линейном макете у меня есть 2 дочерних текстовых представления для отображения деталей. Текст в текстовых представлениях заполняется из JSON данных, извлеченных из API книг Google.

Трудно найти то, как сохранить пространство между обоими текстовыми представлениями в соответствии с разной длиной текста.

Как и в пятом списке, пункт «Фундаментальный из Java ...» может быть расширен, так как осталось много места.

В элементе 1-го элемента и Название, и Имя автора очень длинные, поэтому оба должны отображаться одинаково (50-50)%

И в элементе 3-го списка "Образование Пирсона ..." может быть расширено, так как перед ним больше пустого пространства.

Итак, как определить / распределить пространство в макете, подходящем для каждой ситуации.

Код линейного макета:

<LinearLayout
    android:id="@+id/header_ll"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="4dp"
    android:layout_toRightOf="@+id/image">

    <TextView
        android:id="@+id/title"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="8dp"
        android:layout_weight="2.5"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="Java Programming is really long text right not"
        android:textColor="#ffffff"
        android:textSize="16sp"></TextView>

    <TextView
        android:id="@+id/publisher"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_weight="1"
        android:ellipsize="end"
        android:gravity="end"
        android:maxLines="1"
        android:text="John Wiley and its going long &amp; Sons"
        android:textColor="#ffffff"
        android:textSize="10sp"></TextView>
</LinearLayout>

enter image description here

1 Ответ

1 голос
/ 07 марта 2020

Попробуйте поэкспериментировать, используя RelativeLayout на вашем xml, но вы должны отдать приоритет тому, textView , который будет занимать большую часть пространства - либо из двух (название или издатель) ) затем добавьте autoSizeTextType в textView . Вы также можете использовать ConstraintLayout , но вам нужно ограничить количество элементов, которые будут отображаться в вашем recyclerview , или создать функцию, которая определяет, состоит ли конкретная строка из "n" символов в длину затем настройте отступы или поля.

<RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorAccent">

            <TextView
                android:id="@+id/title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:layout_toLeftOf="@+id/publisher"
                android:autoSizeTextType="uniform"
                android:ellipsize="end"
                android:maxLines="1"
                android:text="Java Programming is really long text right not Java"
                android:textColor="#ffffff"
                android:textSize="16sp" />

            <TextView
                android:id="@+id/publisher"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignParentRight="true"
                android:autoSizeTextType="uniform"
                android:ellipsize="end"
                android:gravity="end"
                android:maxLines="1"
                android:text="John Wiley &amp; Sons sdafsdfsfsdf"
                android:textColor="#ffffff"
                android:textSize="16sp" />
        </RelativeLayout>
...