相对布局放置到其他相对布局

时间:2014-10-02 10:04:11

标签: android android-layout

我正在开发一个聊天应用程序。我想将edittext放在底部,然后将消息放在它上面。但是我有一个问题:

enter image description here

我不想将消息放在edittext和button的顶部。如何防止这种情况?这是我的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ECECFB"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/message_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"/>

 <RelativeLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >


           <EditText
        android:id="@+id/message"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" /> 

               <Button
        android:id="@+id/get_from_user"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:text="Gönder" />
    </RelativeLayout>

</RelativeLayout>

我还有一个问题。如何像其他聊天应用一样进行消息列表系统?我的意思是当我发送消息时,此消息位于列表的底部而不是顶部。现在在我的xml中它放在顶部。就像这样:

enter image description here

7 个答案:

答案 0 :(得分:1)

第一个问题: 您需要设置RelativeLayout

android:bellow="@+id/message_list"

2º问题: 您需要在ListView上设置:

android:stackFromBottom="true"
android:transcriptMode="normal"

最终Xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ECECFB"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/message_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:stackFromBottom="true"
        android:transcriptMode="normal"/>

 <RelativeLayout
        android:bellow="@+id/message_list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >


           <EditText
        android:id="@+id/message"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" /> 

               <Button
        android:id="@+id/get_from_user"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:text="Gönder" />
    </RelativeLayout>

</RelativeLayout>

答案 1 :(得分:1)

例如,添加

android:layout_below="@id/message_list"

到内部RelativeLayout以限制ListView和底部RelativeLayout不要相互叠加。

答案 2 :(得分:1)

试试这个:

将此添加到您的相对布局:android:layout_below =“@ + id / message_list”

并将listview更改为wrap_content

答案 3 :(得分:1)

基本上这样做:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ECECFB"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/comment_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true" >

        <EditText
            android:id="@+id/message"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <requestFocus />
        </EditText>

        <Button
            android:id="@+id/get_from_user"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="40dp"
            android:text="Gönder" />
    </RelativeLayout>

    <ListView
        android:id="@+id/message_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/comment_layout"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >
    </ListView>

</RelativeLayout>

答案 4 :(得分:1)

尝试更改此内容:

<ListView
    android:id="@+id/message_list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"/>

对此:

<ListView
    android:id="@+id/message_list"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"/>

这应该可以解决问题

答案 5 :(得分:1)

ListView设置在EditText布局之上。 您的布局如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ECECFB">

 <RelativeLayout 
        android:id="@+id/bottom_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >


        <EditText
        android:id="@+id/message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" /> 

        <Button
        android:id="@+id/get_from_user"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:text="Gönder" />
    </RelativeLayout>

     <ListView
        android:id="@+id/message_list"
        android:layout_above="@id/bottom_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

对于你的第二个问题,请设置

android:stackFromBottom="true"
android:transcriptMode="normal"

ListView

答案 6 :(得分:0)

添加android:layout_above="@+id/id_of_relative_layout"。 在包含 EditText RelativeLayout 中添加ID。