2012-06-03 61 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>