9

Tengo pantalla con ScrollView y tres LinearLayouts diferentes.¿Cómo dividir la pantalla en tres partes verticalmente?

Una LinearLayout contiene una Spinner y segunda contiene ListView y tercero contiene dos Buttons (horizontal).

Quiero mostrar una pantalla que contiene 3 LinearLayouts siempre se muestra en la parte inferior de la pantalla y 1 LinearLayout siempre se muestra en la parte superior. En la parte central, quiero mostrar el contenido ListView. De modo que en toda la pantalla no hay espacio en blanco presente.

Quiero crear una pantalla para múltiples dispositivos que tiene diferentes tamaños.

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

diseño de la pantalla, con lo que quiero:

enter image description here

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

Respuesta

21

Se trata de una solución muy simple. Debería poder usar esto en su diseño actual.

Complete el LinearLayouts con los contenidos deseados.

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

Captura de pantalla del código publicado anteriormente con colores que muestran las diferentes áreas de diseño.

enter image description here

+1

dos ediciones - Use "fill_parent" en lugar de "match_parent" y tratar de establecer la dimensión que está tratando de normalizar a '0DP' ... En este caso, layout_height = "0DP" en lugar de layout_height = "fill_parent" – edthethird

+1

@ thethethird bastante seguro de que fill_parent está en desuso y aún deberías usar match_parent. Ellos hacen la misma cosa. –

+0

oh tienes razón, lo tengo al revés. – edthethird

Cuestiones relacionadas