LinearLayout添加填充父级视图的元素

时间:2014-12-04 08:57:32

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

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

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

我尝试过相对布局而不是线性布局,但由于所需的重力底部,这不起作用。

我希望有人在这方面更有经验,可以提供解决方案。感谢您的帮助。

编辑:textview位于相对布局中,因为我需要稍后添加额外的视图..

2 个答案:

答案 0 :(得分:3)

weight=1width=0dp放入相对布局,内部文字宽度应为match_parent

答案 1 :(得分:1)

试试这个。你应该给你的对话云重量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>