Android LinearLayout在填充父视图的视图右侧添加元素
我有以下情况:Android LinearLayout在填充父视图的视图右侧添加元素,android,android-layout,android-linearlayout,Android,Android Layout,Android Linearlayout,我有以下情况: <?xml version="1.0" encoding="utf-8"?> <LinearLayout 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_he
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="3dp"
android:paddingBottom="3dp"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:orientation="horizontal">
<com.myappnamespace.old.widgets.RoundBorderedImageView
android:layout_width="53dp"
android:layout_height="53dp"
app:src="@drawable/avatar_john_doe"
android:layout_gravity="bottom"
app:borderColor="#ff0"
/>
<com.myappnamespace.old.widgets.ConversationCloud
android:id="@+id/block"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_gravity="bottom"
android:layout_marginBottom="15dp"
android:layout_marginLeft="10dp"
/>
<RelativeLayout
android:id="@+id/message"
android:minHeight="100dp"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:background="#fff"
android:padding="6dp"
android:layout_gravity="bottom"
>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some dummy text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus quis lectus metus, at posuere neque. Sed pharetra nibh eget orci convallis at posuere leo convallis. Sed blandit augue vitae augue scelerisque bibendum. Vivamus sit amet libero turpis, non venenatis urna. In blandit, odio convallis suscipit venenatis, ante ipsum cursus augue."
/>
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="3dp"
android:paddingBottom="3dp"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:orientation="horizontal">
<RelativeLayout
android:id="@+id/message2"
android:minHeight="100dp"
android:layout_height="wrap_content"
android:layout_width="200dp"
android:background="#fff"
android:padding="6dp"
android:layout_gravity="bottom"
>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some dummy text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus quis lectus metus, at posuere neque. Sed pharetra nibh eget orci convallis at posuere leo convallis. Sed blandit augue vitae augue scelerisque bibendum. Vivamus sit amet libero turpis, non venenatis urna. In blandit, odio convallis suscipit venenatis, ante ipsum cursus augue."
/>
</RelativeLayout>
<com.myappnamespace.old.widgets.ConversationCloud
android:id="@+id/block2"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_gravity="bottom"
android:layout_marginBottom="15dp"
android:layout_marginRight="10dp"
app:cloud_direction="right"
/>
<com.myappnamespace.old.widgets.RoundBorderedImageView
android:layout_width="53dp"
android:layout_height="53dp"
app:src="@drawable/avatar_john_doe"
android:layout_gravity="bottom"
app:borderColor="#ff0"
/>
</LinearLayout>
</LinearLayout>
结果:
第一行的消息块填满了空间,因为它前面有两个视图元素和layout\u height=“fill\u parent”
。这很好,但我很难在第二行得到相同的结果,唯一的例外是消息块在左边。如果我在消息中使用fill\u parent
来执行此操作,它会填满整个屏幕。我正在寻找一种方法(不使用Java代码修改布局),让化身和对话可以将消息块推到左侧
在代码中,我将第二个消息块的宽度设置为100dp,以演示它应该是什么样子(但随后空的空间被填满)
我尝试了相对布局而不是线性布局,但这不起作用,因为底部需要重力
我希望有人在这方面更有经验,可以提供一个解决方案。谢谢你的帮助
编辑:文本视图位于相对布局内,因为我以后需要在那里添加额外的视图。put
weight=1
和width=0dp
对于相对布局,内部文本应具有匹配父视图
的宽度。你应该给你的对话云加3分,给图像加1分
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="3dp"
android:paddingBottom="3dp"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:orientation="horizontal">
<com.myappnamespace.old.widgets.RoundBorderedImageView
android:layout_width="0dp"
android:layout_height="53dp"
app:src="@drawable/avatar_john_doe"
android:layout_gravity="bottom"
app:borderColor="#ff0"
android:layout_weight="1"/>
<com.myappnamespace.old.widgets.ConversationCloud
android:id="@+id/block"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_gravity="bottom"
android:layout_marginBottom="15dp"
android:layout_marginLeft="10dp"
/>
<RelativeLayout
android:id="@+id/message"
android:minHeight="100dp"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:background="#fff"
android:padding="6dp"
android:layout_gravity="bottom"
android:layout_weight="3">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some dummy text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus quis lectus metus, at posuere neque. Sed pharetra nibh eget orci convallis at posuere leo convallis. Sed blandit augue vitae augue scelerisque bibendum. Vivamus sit amet libero turpis, non venenatis urna. In blandit, odio convallis suscipit venenatis, ante ipsum cursus augue."
/>
</RelativeLayout>
</LinearLayout>
已确认此功能正常。我一直在玩弄重量,所有元素都有重量,但这并没有解决问题。干得好:)