android - LinearLayout 在填充父级的 View 右侧添加元素

标签 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_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>

结果:

screenshot of the layout

第一行的消息 block 正在填充空间,因为它前面有两个 View 元素和 layout_height="fill_parent"。这工作正常,但我很难为第二行获得相同的结果,但消息 block 位于左侧。如果我在消息上使用 fill_parent 执行此操作,它会填满整个屏幕。我正在寻找一种方法(无需使用 Java 代码修改布局)让头像和 ConversationCould 图像将消息 block 推到左侧。

在代码中,我将第二个消息 block 的宽度设置为 100dp 以演示它应该是什么样子(但随后空白空间被填满)。

我尝试了相对布局而不是线性布局,但这不起作用,因为需要重力底部。

希望有人在这方面更有经验并能提供解决方案。感谢您的帮助。

编辑: TextView 位于相对布局内,因为我稍后需要在其中添加额外的 View ..

最佳答案

weight=1width=0dp 作为相对布局,里面的文本应该有 match_parent 作为宽度

关于android - LinearLayout 在填充父级的 View 右侧添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27289839/

相关文章:

android - BigInteger q = new BigInteger(8, 10, new Random());未在 Android 中产生预期结果

android - 向我展示空指针异常,无法找出原因

android - 如何获取应用的洞察

android - 单击父 View 时调用 subview onClickListener

java - 我怎样才能让我的测试版过期?

android 在 TextView 末尾追加 '...'

java - 安卓磨损 : Layout is not displaying properly in Emulator

android - 如何在 Android 中进行入职培训

android - 在LinearLayout中销毁一个按钮到另一个按钮的空间

安卓 : How to put cross icon on top of the autocomplete textView