Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android LinearLayout在填充父视图的视图右侧添加元素_Android_Android Layout_Android Linearlayout - Fatal编程技术网

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>

已确认此功能正常。我一直在玩弄重量,所有元素都有重量,但这并没有解决问题。干得好:)