我想制作一个简单的聊天布局,每个消息的小时位于文本右下角(如Whatsapp中)。每条消息的宽度都会动态变化,因此我必须将layout_width设置为wrap_content。在这种情况下,重力或 layout_gravity 不会影响小时,但我不知道如何使它与众不同。这是代码。 txtMessage 是消息,而 ora 是我想要在消息下方右下方对齐的小时。 谢谢
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/contentWithBackground"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/risponditore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:textSize="10sp"
android:textStyle="bold"
android:text=""
android:visibility="gone"
android:textColor="@color/bluScuro"/>
<TextView
android:id="@+id/txtMessage"
android:layout_below="@+id/risponditore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:maxWidth="245dp"
android:textSize="12sp"
android:layout_gravity="left"/>
<RelativeLayout
android:id="@+id/contenitoreOra"
android:layout_below="@+id/txtMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="right">
<TextView
android:id="@+id/ora"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"
android:textColor="@color/grigioScuro"
android:layout_gravity="bottom|right"/>
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
编辑:
我想要这种布局:
Text message Text message Text message Text message
Text message Text message Text message Text message
Text message Text message Text message Text message
hour
答案 0 :(得分:1)
最后,我使用TableLayout获得了两行的解决方案 第一行包含消息,第二行包含小时 消息左对齐,小时右对齐 以下是代码。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/contentWithBackground"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/risponditore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:textSize="10sp"
android:textStyle="bold"
android:text=""
android:visibility="gone"
android:textColor="@color/bluScuro"/>
<TableLayout
android:id="@+id/tabellaMessaggioOra"
android:layout_below="@+id/risponditore"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TableRow
android:id="@+id/rigaMessaggio"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/txtMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:maxWidth="245dp"
android:textSize="12sp"
android:layout_gravity="left"/>
</TableRow>
<TableRow
android:id="@+id/rigaOra"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/ora"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"
android:textColor="@color/grigioScuro"
android:layout_gravity="right"/>
</TableRow>
</TableLayout>
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
答案 1 :(得分:0)
您可以使用 android:layout_toRightOf 逻辑。
将此视图的左边缘定位到给定锚点的右侧 查看ID。容纳此视图的左边距和右边距 锚视图。
示例强>
<Button
android:id="@+id/btnButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Intellij"/>
<Button
android:id="@+id/btnButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Amiyo"
android:layout_toRightOf="@+id/btnButton1"/>
<强> FYQ 强>
使用 android:gravity="bottom|right"
<TextView
android:id="@+id/ora"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"
android:text="Text message"
android:gravity="bottom|right"/>
答案 2 :(得分:0)
在这种情况下,您可能希望使用LinearLayout,如果您在LinearLayout中赋予重力,它将起作用。如果你想严格要求RelativeLayout,请忽略它。
<LinearLayout
android:id="@+id/contenitoreOra"
android:layout_below="@+id/txtMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="right">
<TextView
android:id="@+id/ora"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"
android:textColor="@color/grigioScuro"
android:layout_gravity="bottom|right"/>
</LinearLayout>