У меня LinearLayout с ориентацией horizontal, и я не хочу, чтобы мой первый TextView выдвинул другие, это мой код

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

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/item_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="TEST asdas asd" />

    <TextView
        android:id="@+id/item_qty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_weight="1"
        android:text="Qty: 2" />

    <TextView
        android:id="@+id/item_price"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_weight="1"
        tools:text="$100.00"/>

</LinearLayout>

Выход

С не так много текста это выглядит так

enter image description here

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

enter image description here

1
CoffeeBreak 14 Апр 2020 в 21:58

2 ответа

Лучший ответ

Я думаю, что у вас есть проблемы с макетом. Вы устанавливаете вес своих предметов, но у вас layout_width установлено wrap_content, что противоречит layout_weight. Поэтому я бы порекомендовал изменить макет следующим образом (в основном установив layout_width=0dp).

<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:orientation="horizontal"
    android:weightSum="3">

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/item_name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Some long text that is pushing the other texts to the right and taking up all the spaces!!!" />

    <TextView
        android:id="@+id/item_qty"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Qty: 2" />

    <TextView
        android:id="@+id/item_price"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        tools:text="$100.00" />

</LinearLayout>

Надеюсь, это поможет!

2
Reaz Murshed 14 Апр 2020 в 19:08

В основном, если вы используете веса, вы должны установить layout_height в 0 для линейного макета с вертикальной ориентацией. В то время как layout_width до 0 для горизонтального линейного макета.

0
CodeEnzyme 14 Апр 2020 в 21:30