我正在尝试在聊天应用程序中创建消息布局。
此消息布局应包含:
- 圆角矩形中的消息 Textview
ImageView
同一矩形内的消息状态检查图标- 消息发送时间
TextView
在圆角矩形之外和它的右边。
当文本很短时,整个布局应该向右对齐。当文本很长时,消息TextView
将向左扩展,在触摸屏幕左侧时,它会扩展为新行。
问题是FrameLayout
:尽管底层宽度设置为 wrap_content,但无论消息长短,圆角矩形都会延伸到整个屏幕。
这是问题的图像:
我使用的布局是:
<RelativeLayout
android:id="@+id/outer_rl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:paddingTop="8dp">
<TextView
android:id="@+id/text_message_time"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:textSize="10sp"
app:showDate="@{message.postedAt}" />
<RelativeLayout
android:id="@+id/bubble_ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/text_message_time"
android:background="@drawable/rounded_rectangle_bubble_sent"
android:padding="8dp">
<ImageView
android:id="@+id/iv_check"
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_alignParentRight="true"
android:layout_gravity="center_vertical"
android:layout_marginLeft="4dp"
app:setStatusPng="@{message.status}" />
<TextView
android:id="@+id/messagetext_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:layout_marginTop="2dp"
android:layout_toLeftOf="@id/iv_check"
android:singleLine="false"
android:text="@{message.messageText}"
android:textColor="#ffffff" />
</RelativeLayout>
</RelativeLayout>
内部RelativeLayout
命名bubble_ll
的宽度等于wrap_content
。
我期待的是:
- text_message_time TextView 应该附加到屏幕的右侧,因为它的layout_alignParentEnd属性设置为 true。
- 由于其 layout_toLeftOf 属性集,bubble_ll位于text_message_time视图的左侧。它应该具有其内容的宽度。
我尝试过其他布局,例如 Linear、ConstraintLayout 等。
该LinearLayout
方法不起作用,因为宽度设置wrap_content
为TextView
始终与状态信息检查重叠,并且消息时间使它们在消息TextView
较长时消失。
ConstraintLayout
我无法对齐气泡以保持在右侧。它水平停留在屏幕的中心,因为它被限制在屏幕的水平两侧。
任何帮助将不胜感激。