布局问题:如何在顶部和底部放置东西?

问题描述:

我想要创建一个布局,顶部和底部有一个水平LinearLayout(s),一个ListView填充在中间。布局问题:如何在顶部和底部放置东西?

如何定义main.xml。

我试着创建一个顶部水平LinearLayout,底部TextView,一个ListView填充中间的布局;没问题。但是在我将底部TextView修改为LinearLayout之后,底部的LinearLayout消失了。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     > 
     <TextView 
      android:textSize="12px" 
      android:text="something here" 
      android:layout_width="50px" 
      android:layout_height="wrap_content" 
      /> 
     <TextView 
      android:textSize="12px" 
      android:text="something here" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      /> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="bottom" 
     > 
     <ListView 
      android:id="@+id/listbody" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      /> 
     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_height="wrap_content" 
      android:layout_width="fill_parent" 
      > 
      <TextView 
       android:layout_height="wrap_content" 
       android:layout_width="0dip" 
       android:layout_weight="1" 
       android:textSize="12px" 
       android:text="50%" 
       /> 
      <TextView 
       android:layout_height="wrap_content" 
       android:layout_width="0dip" 
       android:layout_weight="1" 
       android:textSize="12px" 
       android:text="50%" 
       /> 
     </LinearLayout> 
    </LinearLayout> 
</LinearLayout> 

有人可以告诉意见吗? 请帮忙。

尝试包含在RelativeLayout的整套:

<?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" > 

    <LinearLayout 
     android:id="@+id/top_linear_layout_id" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" > 
    </LinearLayout> 

    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/bottom_linear_layout_id" 
     android:layout_below="@id/top_linear_layout_id" /> 

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

与大小的东西编辑。

+0

现在,LinearLayout与ListView重叠!我认为在底部LinearLayout的定义中应该是错误的。 – chow 2011-01-13 01:25:37

+0

不是特别的。对于ListView,添加: \t机器人:layout_height = “WRAP_CONTENT” \t的android:layout_width = “FILL_PARENT” \t机器人:layout_below = “@ ID/top_linear_layout_id” \t机器人:layout_above = “@ + ID/bottom_linear_layout_id” 与线性布局的相应ID一起。 – Estel 2011-01-13 01:48:42

问题在于你正在定义它们相对于它们包含的内容的大小,但是如果它们的组合内容比屏幕大,那么它们中的一个将不得不与另一个重叠,最好在线性布局中使用绝对测量来定义layout_height

以下是您要查找的内容。 Estel在RelativeLayout的正确轨道上(虽然可以使用LinearLayout完成,但我认为RelativeLayout方法更清晰) 但布局不合理 Nevermind,检查Estel的评论,证明我错了。 :)你应该首先定义你的标题,将它对齐到顶端;接下来,定义您的页脚,并将其对齐到底部;最后,声明你的ListView,给它FILL_PARENT的高度,并将其设置为布局头球攻门高出页脚及以下:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <LinearLayout 
     android:id="@+id/header" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:alignParentTop="true" 
     > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/footer" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:alignParentBottom="true" 
     > 
    </LinearLayout> 

    <ListView 
     android:id="@+id/listview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_above="@id/footer" 
     android:layout_below="@id/header" 
     /> 
</RelativeLayout> 

感谢您的RelativeLayout的建议和指导所有。我现在可以修复它。

我必须定义ListView的前躯的LinearLayout,并定义的ListView由于Android:layout_alignParentTop = “真” 和android:layout_above = “@ ID /页脚”

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
    > 
     <TextView 
      android:textSize="12px" 
      android:text="something here" 
      android:layout_width="50px" 
      android:layout_height="wrap_content" 
      /> 
     <TextView 
      android:textSize="12px" 
      android:text="something here" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
     /> 
    </LinearLayout> 
    <RelativeLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
    > 
     <LinearLayout 
      android:id="@+id/footer" 
      android:orientation="horizontal" 
      android:layout_height="wrap_content" 
      android:layout_width="fill_parent" 
      android:layout_alignParentBottom="true" 
     > 

      <TextView 
       android:layout_height="wrap_content" 
       android:layout_width="0dip" 
       android:layout_weight="1" 
       android:textSize="12px" 
       android:text="50%" 
       /> 
      <TextView 
       android:layout_height="wrap_content" 
       android:layout_width="0dip" 
       android:layout_weight="1" 
       android:textSize="12px" 
       android:text="50%" 
      /> 

     </LinearLayout> 
     <ListView 
      android:id="@+id/tablebody" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_above="@id/footer" 
     /> 
    </RelativeLayout> 
</LinearLayout> 

这肯定会解决你的问题:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <HorizontalScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 
      <TextView 
       android:textSize="12sp" 
       android:text="something here" 
       android:layout_width="50dp" 
       android:layout_height="wrap_content"/> 
      <TextView 
       android:textSize="12sp" 
       android:text="something here" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content"/> 
     </LinearLayout> 
    </HorizontalScrollView> 
    <ListView 
     android:id="@+id/listbody" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"/> 
    <HorizontalScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_height="wrap_content" 
      android:layout_width="fill_parent"> 
      <TextView 
       android:layout_height="wrap_content" 
       android:layout_width="0dip" 
       android:layout_weight="1" 
       android:textSize="12sp" 
       android:text="50%"/> 
      <TextView 
       android:layout_height="wrap_content" 
       android:layout_width="0dip" 
       android:layout_weight="1" 
       android:textSize="12sp" 
       android:text="50%"/> 
     </LinearLayout> 
    </HorizontalScrollView> 
</LinearLayout>