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_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.">
 </textview></relativelayout>

 </com.myappnamespace.old.widgets.conversationcloud></com.myappnamespace.old.widgets.roundborderedimageview></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.">
 </textview></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">

 </com.myappnamespace.old.widgets.roundborderedimageview></com.myappnamespace.old.widgets.conversationcloud></linearlayout>

</linearlayout>

Результат:

Блок сообщений первой строки заполняет пространство, потому что перед ним есть два элемента представления и layout_height="fill_parent". Это работает нормально, но я изо всех сил пытаюсь получить тот же результат для второй строки, за исключением того, что блок сообщений находится слева. Если я сделаю это с помощью fill_parent в сообщении, он заполнит весь экран. Я ищу способ (без изменения макета с кодом Java), чтобы аватар и изображение ConversationCould отображали блок сообщения слева.

В коде я установил ширину второго блока сообщений на 100dp, чтобы продемонстрировать, как он должен выглядеть (но затем заполняется пустое пространство).

Я пробовал относительный макет вместо линейного макета, но это не работает из-за необходимого гравитационного дна.

Я надеюсь, что кто-то более опытен в этом и может предложить решение. Ваша помощь приветствуется.

Изменение: текстовое изображение находится внутри относительного макета, потому что мне нужно добавить дополнительные просмотры позже.

2 ответа

положить weight=1 и width=0dp для relativelayout текст внутри должен иметь match_parent для ширины


попробуй это. u должен дать вес 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.">
 </textview></relativelayout>

 </com.myappnamespace.old.widgets.conversationcloud></com.myappnamespace.old.widgets.roundborderedimageview></linearlayout>

licensed under cc by-sa 3.0 with attribution.