使用2个调整大小视图创建Android布局

时间:2012-09-20 10:32:58

标签: android android-layout

在我的布局中,我需要一个标题,一个列表视图和一个带有TextView的页脚。 TextView需要最多可调整为5行。想想facebook聊天,你的朋友的名字,中间内容窗格和下面的文本框都有蓝色标题,当你输入内容时,它会增长:

[header]     a fragment that takes up about 50dp
[content]
[content]
[content]
[content]    something like a ViewGroup with a ListView in it
[content]
[content]
[content]
[footer]     a ViewGroup that contains an EditText and Buttons

我尝试了各种不同的布局设置,但无法正确使用。页脚占据所有空间,或内容覆盖页脚。

这是我到目前为止所拥有的:

<LinearLayout ...>

    <!-- Slot to put Header fragment in -->
    <FrameLayout
        android:id="@+id/header"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <!-- Here's where the content goes. This is supposed to be a ListView
         inserted as a fragment -->
    <FrameLayout
        android:id="@+id/content"
        ... />

    <include
        android:id="@+id/footer"
        ... />

</LinearLayout>

我遗漏了layout_widthlayout_height值为空,因为我不知道将它们设置为什么。

更新 最初,我认为问题是因为我的EditText设置为maxLines=5TextMultiline,但我尝试删除除了一个带有硬编码高度的按钮以外的所有内容,插入内容仍覆盖所有内容。我还尝试设置<footer below="content">,然后content刚刚设置了footer

3 个答案:

答案 0 :(得分:1)

问题是所包含的footer布局是另一个RelativeLayoutfooter布局包含设置layout_alignParentBottom="true"的元素,这使得页脚布局占据整个屏幕。我不知道它为什么会那样做,但那就是发生的事情。

答案 1 :(得分:0)

为了创建这样的UI,创建一个布局

header.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

<TextView

            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:text="xyz"
            android:textSize="10dp" />
</LinearLayout>

页脚:

footer.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

<EditText

            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:text="xyz"
            android:textSize="10dp" />
</LinearLayout>

创建另一个包含listView的布局,如你所说: main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical" >
 **<include layout="@layout/header.xml" android:layout_alignParentTop="true"/>**   
<ListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        >
    </ListView>
 **<include layout="@layout/footer.xml" android:layout_below="@+id/listview" android:layout_alignParentBottom="true"/>**   
</RelativeLayout>

答案 2 :(得分:0)

检查这个...我希望它有所帮助。目前我在Values文件夹中定义了一个array.xml,其中包含ListView的一些空条目。你必须用代码来处理它。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


        <TextView 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="HEADER" />    

        <ListView 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:entries="@array/chats"
            android:layout_weight="1">

        </ListView>


        <EditText 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:lines="5"
            android:inputType="textMultiLine"
            android:hint=" Please enter your Chat" />  

</LinearLayout>