【发布时间】:2021-08-27 14:21:36
【问题描述】:
所以,这个想法:我有两个TextViews,第一个可以扩展它想要的任何内容,第二个总是 5 个字符(时间)。问题在于第一个TextView 可以轻松地将第二个推出屏幕。
所以,我需要的是可调整的LinearLayout,或者可能是一些GridLayout,如果它不适合父母,它会在某种第二行上移动第二个TextView。
例如,您可以在 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>
更新 2
所以我将 layout_weight 添加到第一个 TextView,这有助于解决我的第一个问题,但现在我有了新问题。这两个TextViews 在LinearLayout 中,在另一个LinearLayout 和另一个TextView 中。父 LinearLayout 将宽度设置为 wrap_content 所以如果顶部 TextView 将大于 2 TextViews 它将导致子 LinearLayout 小于它的父,并且第二个 TextView (从那个 2)不会t 在父级的末尾。但是当孩子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>
【问题讨论】:
-
把代码放在这里,这样会很容易
-
你看过
weight和LinearLayout吗? -
显示xml代码
-
@DavidMedenjak 现在我将第一个视图的权重设置为 0.7,一切都开始好了。但在这种情况下,第二个视图不在父视图的末尾。