如果不适合,将视图移动到“下一行”

Ek*_*ps 5 android android-layout

所以,想法是这样的:我有两个TextViews,第一个可以扩展它想要的任何东西,第二个总是 5 个字符(时间)。问题在于第一个TextView可以轻松地将第二个推出屏幕。

所以,我需要的是诸如 adjust 之类的东西LinearLayout,或者如果它不适合父级,它可能GridLayoutTextView在某种第二行上移动第二。

例如,您可以在 Viber 和 WhatsApp 中查看消息气泡。感谢您的任何建议。

更新 1

这是我现在拥有的 XML(仅消息部分)

              <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/messageBox"
                android:layout_gravity="center_vertical"
                android:gravity="center_vertical">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="14sp"
                    android:layout_gravity="center_vertical"
                    android:gravity="center_vertical"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
                    android:textColor="@color/black"
                    android:text='@{mess.message}'/>

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_gravity="center_vertical|end"
                    android:gravity="center_vertical|end"
                    android:paddingLeft="8dp"
                    android:textSize="12sp"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:text='@{Utils.parseMillsToHoursAndMins(mess.date)}'/>
            </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

更新 2

所以我将 layout_weight 添加到 first TextView,这有助于解决我的第一个问题,但现在我有了新的问题。这两个TextViews in LinearLayoutwhich is in another LinearLayoutwith another TextView。父级的LinearLayout宽度设置为 wrap_content,因此如果 topTextView大于 2 TextViews,它将导致子级LinearLayout小于它的父级,并且第二个TextView(从那 2 个开始)不会在父级的末尾。但是当孩子LinearLayout更大时,一切似乎都可以。我知道这很复杂,所以这是 XML

<LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:minWidth="0dp"
            android:id="@+id/contentPanel"
            app:bringToFront="@{true}"
            android:orientation="vertical"
            android:background="@{(mess.isMine?@drawable/chat_bubble_right:@drawable/chat_bubble_left)}">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text='@{!mess.authorRole.equals("Client")?(mess.authorRole + " - " + mess.author):mess.author}'
                android:textColor='@{mess.authorRole.equals("Lawyer")?@color/colorPrimary:mess.authorRole.equals("Admin")?@color/red:@color/green}'
                android:textSize="12sp"
                android:id="@+id/author"
                android:fontFamily="sans-serif-medium"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"/>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/messageBox">
                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:textSize="14sp"
                    android:layout_gravity="center_vertical"
                    android:gravity="center_vertical"
                    android:layout_weight="0.7"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
                    android:textColor="@color/black"
                    android:text='@{mess.message}'/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:paddingLeft="8dp"
                    android:textSize="12sp"
                    android:gravity="bottom|end"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    app:checkFit="@{false}"
                    android:text='@{Utils.parseMillsToHoursAndMins(mess.date)}'/>
            </LinearLayout>
        </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

Gan*_*kar 0

我不确定这是否会对您有帮助,但是:使用:https://github.com/ApmeM/android-flowlayout

<org.apmem.tools.layouts.FlowLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

</org.apmem.tools.layouts.FlowLayout>
Run Code Online (Sandbox Code Playgroud)

在 FlowLayout 内,您可以放置​​视图,如果不适合,它将自动移动到下一行。