如果布局中没有空格,则自动在下一行中显示TextView

时间:2018-12-11 18:30:47

标签: java android android-studio-3.0

如果文本视图不适合当前行,我想自动将其移到下一行。例如,我在一个布局中有20个TextView,并希望在其中设置客户名称。一些客户名称的长度很大,而有些则很小。根据该行的可用空间,应显示一个TextView。如果没有空间,那么它将自动移至该布局的下一行。

有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

标准的Android框架中没有任何东西可以让您做到这一点,但是Google提供了一个非常不错的外部库FlexboxLayout,可以为您完成此工作。

您将使用FlexboxLayout作为所有TextView的父对象,而不是例如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"很重要,因为默认设置是不进行换行。我不确定为什么会这样,因为使用此库的全部目的是包装,但是。

答案 1 :(得分:0)

听起来像您在尝试对某些文本视图进行芯片化。您将需要某种布局管理器来测量视图并确定如何显示它们。在Github上检查一下,或者与ContactChips有关的任何事情都可能有用。 Chips Layout Manager

答案 2 :(得分:0)

创建线性布局,使用height作为wrap_content,width作为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>