2012-06-03 24 views
3

我试图制作一个屏幕,顶部是TextView,中间是ListView,底部是Button。我希望它是这样,TextView总是在屏幕上的顶部,并且按钮总是在底部,然后ListView介于两者之间。当ListView超过“中间的空间”时,我希望滚动功能只在TextViewButton之间。随着我的尝试,它只是扩大了TextViewButton在LinearLayout中包装一个ListView

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/paper" > 

<TextView 
    android:id="@+id/tvLOL" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:text="Standardvarer" 
    android:textSize="40dp" /> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/tvLOL" 
    android:layout_alignBottom="@+id/bNyVare" 
    android:orientation="vertical" > 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 
</LinearLayout> 

<Button 
    android:id="@+id/bNyVare" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:text="Tilføj ny vare" 
    android:textSize="30dp" /> 

</RelativeLayout> 

回答

5

看看这有助于(在LinearLayout包裹ListView应删除(移动layout_above /下面的ListView)如果你只是用它来包装ListView并没有别的):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/paper" > 

<TextView 
    android:id="@+id/tvLOL" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:text="Standardvarer" 
    android:textSize="40dp" /> 

<Button 
    android:id="@+id/bNyVare" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:text="Tilføj ny vare" 
    android:textSize="30dp" /> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/tvLOL" 
    android:layout_above="@id/bNyVare" 
    android:orientation="vertical" > 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

</RelativeLayout> 
+0

将LinearLayout与ListView放在xml定义的底部很重要,因为您必须先定义TextView和Button,才能在layout_below/above中使用它们的id。我会考虑彻底删除LinearLayout – banzai86

3

只是@Luksprog的替代解决方案,尽管这绝对是更复杂布局的方法。尽管如此,我会抛弃围绕ListViewLinearLayout,因为除了视图层次结构中不必要的复杂性外,它不会添加任何内容。

如在您的问题描述

一个相对简单的布局,也可以使用作为LinearLayout根和对ListView的重量来动态填充其间的TextViewButton和所有空间写入。这个重量也推动Button一直到底部,而不推它。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:background="@drawable/paper" android:orientation="vertical"> 

    <TextView android:id="@+id/tvLOL" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:layout_gravity="center_horizontal" 
     android:text="Standardvarer" android:textSize="40dp" /> 

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

    <Button android:id="@+id/bNyVare" android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:text="Tilføj ny vare" 
     android:textSize="30dp" /> 

</LinearLayout>