9

我的屏幕ScrollView和三个不同的LinearLayouts如何将屏幕垂直分为三部分?

其中一个LinearLayout包含Spinner,第二个包含ListView,第三个包含两个Buttons(水平)。

我想要显示一个屏幕,其中包含总是显示在屏幕底部的3 LinearLayouts和总是显示在顶部的1 LinearLayout。在中间部分,我想显示ListView的内容。因此整个屏幕上不存在空白区域。

我想创建具有不同大小的多个设备的屏幕。

 <?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="match_parent" 
android:background="@drawable/backrepeat" 
android:orientation="vertical" > 

<include 
    android:id="@+id/include1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    layout="@layout/actionbar" > 
</include> 

<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:scrollbars="horizontal" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:padding="10dp" > 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight=".2" 
      android:background="@drawable/rounded_border" 
      android:orientation="vertical" 
      android:padding="15dp" > 

      <TextView 
       android:id="@+id/tvDiaryData" 
       style="@style/greenstyle" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:background="@drawable/heading" 
       android:gravity="center_horizontal" 
       android:text="@string/tvDiaryData" > 
      </TextView> 

      <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="10dp" 
       android:gravity="center_horizontal" > 
      </TextView> 

      <Spinner 
       android:id="@+id/spDiaryAllBooking" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:prompt="@string/select_diaryallbooking" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1.6" 
      android:background="@drawable/layerlist" 
      android:orientation="vertical" 
      android:paddingBottom="5dp" 
      android:paddingLeft="15dp" 
      android:paddingRight="15dp" 
      android:paddingTop="5dp" > 

      <ListView 
       android:id="@+id/lvDiaryBooking" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:divider="#636466" 
        android:layout_weight="1" 
       android:dividerHeight="1dip" 
       android:scrollbarStyle="outsideOverlay" 
       android:scrollbarThumbVertical="@drawable/scrollbar_vertical_thumb" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight=".2" 
      android:background="@drawable/rounded_border" 
      android:orientation="horizontal" 
      android:padding="10dp" > 

      <Button 
       android:id="@+id/btnDiaryBook" 
       style="@style/greenButton" 
        android:layout_weight="1" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent"      
       android:onClick="btnDiaryBook_Click" 
       android:text="@string/btnBook" > 
      </Button> 

      <Button 
       android:id="@+id/btnDiaryBalance" 
       style="@style/greenButton" 
        android:layout_weight="1" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:layout_marginLeft="10dp"     
       android:onClick="btnDiaryBalance_Click" 
       android:text="@string/btnDiaryBalance" > 
      </Button> 
     </LinearLayout> 
    </LinearLayout> 
     </ScrollView> 

    </LinearLayout> 

屏幕布局与我想要的东西:

enter image description here

Current Layout - This give blank space on below of screen on tablet

回答

21

这是一个非常简单的解决方案。你应该能够在你当前的布局中使用它。

只需填写您想要的内容LinearLayouts

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

    <LinearLayout 
     android:id="@+id/ll1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/ll2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/ll3" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" > 
    </LinearLayout> 

</LinearLayout> 

上面贴出的代码的屏幕截图显示了不同布局区域的颜色。

enter image description here

+1

2名编辑 - 使用“FILL_PARENT”而不是“match_parent”,并尝试设置您要标准化为“0dp” ......在这种情况下,layout_height =“0dp”,而不是layout_height =的尺寸“fill_parent” – edthethird 2012-08-16 14:33:57

+1

@edthethird很确定fill_parent已被弃用,您仍然应该使用match_parent。他们做同样的事情。 – 2012-08-16 14:41:48

+0

哦,你是对的,我倒过来了。 – edthethird 2012-08-16 15:07:01