TextView в следующей строке автоматически, если в макете нет места - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу, чтобы TextView автоматически переходил к следующей строке, если она не помещается в текущей строке.Например, у меня есть 20 TextViews в макете и я хочу установить имена клиентов в этом.Некоторые имена клиентов имеют большую длину, а некоторые маленькие.В зависимости от наличия места в этой строке должен отображаться TextView.Если пробела нет, автоматически он должен перейти к следующему ряду в этом макете.

Может кто-нибудь помочь мне с этим?

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Звучит так, будто вы пытаетесь отфильтровать некоторые текстовые представления.Вам понадобится какой-то менеджер компоновки, чтобы измерить представления и определить, как их отображать.Проверьте это на Github или что-нибудь, что связано с ContactChips, может быть полезно. Менеджер по расположению чипсов

0 голосов
/ 12 декабря 2018

создайте линейный макет, используя высоту как wrap_content и ширину как match_parent, а затем внутри него создайте Textview внутри него и задайте его высоту как wrap_content, чтобы он автоматически расширялся при увеличении вашего контента.это так просто. Вы можете проверить пример ниже.

 <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:padding="4dp"
                        android:singleLine="false"
                        android:textColor="@color/black"
                        android:textSize="16sp" />

                </LinearLayout>

            </LinearLayout> 
0 голосов
/ 11 декабря 2018

В стандартной платформе Android нет ничего, что позволяло бы вам это делать, но есть очень хорошая внешняя библиотека от Google под названием FlexboxLayout , которая сделает это за вас.

Вы 'd используйте FlexboxLayout в качестве родителя для всех ваших TextView s, например, вместо LinearLayout, и он позаботится об их упаковке.

<com.google.android.flexbox.FlexboxLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:flexWrap="wrap">

    <!-- add your 20 textviews here -->

</com.google.android.flexbox.FlexboxLayout>

Обратите внимание, что важноукажите app:flexWrap="wrap", поскольку по умолчанию не выполняется перенос.Я не уверен, почему это так, поскольку весь смысл использования этой библиотеки состоит в том, чтобы получить перенос, но эй.

...