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