Search code examples
androidandroid-linearlayoutandroid-scrollviewandroid-relativelayout

android: fix blank scrollview layout?


My goal is to show a toolbar at the top of the view, then a TextView, then a ScrollView section and then a footer that always shows at the bottom of the view. The below only shows the toolbar and the TextView header. Nothing is showing for the ScrollView section or for the footer at the bottom. What am I missing here?

EditActivity.xml

<RelativeLayout

    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    android:focusableInTouchMode="true"
    tools:context=".EditActivity">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" >
    </include>

<RelativeLayout android:id="@+id/header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:layout_below="@+id/toolbar"  >

    <TextView
    android:id="@+id/create_skycard"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textStyle="bold"
    android:textColor="@color/colorFlLabelFinal"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:clickable="false"  />

</RelativeLayout>

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

    <ViewFlipper
        android:id="@+id/viewFlipper1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="5dp"  >

        <include layout="@layout/cardview_nobuttons"
            android:id="@+id/cardviewNobuttons"  />

        <include layout="@layout/cardview_previewbuttons"
            android:id="@+id/cardviewPreviewbuttons" />            

    </ViewFlipper>

</RelativeLayout>  

<ScrollView
android:id="@+id/ScrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/header"
android:layout_above="@+id/myFooter"
android:fillViewport="true"  >

<LinearLayout
    android:id="@+id/LinearLayout1"
    style="@style/scrollbar_shape_style"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"  >      

    <com.wimso.v108.widget.EditText
    ...  />

</LinearLayout>

</ScrollView>

</RelativeLayout>

Solution

  • First of all, you should limit height of footer view. I set the ViewFlipper's height to 128dp for test, so you can calculate your own based on its content.

    Second: You should set android:layout_alignParentTop="true" for the include which its id is toolbar. To do this you should set height and weight for it as I did.

    Third: The height of the ScrollView should be wrap_content instead of match_parent to be sure it stretches between header and footer views.

    Here is your layout source code after applying the above corrections:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FFFFFF"
        android:focusableInTouchMode="true"
        tools:context=".EditActivity">
    
        <include
            android:id="@+id/toolbar"
            layout="@layout/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true" />
    
        <RelativeLayout
            android:id="@+id/header"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/toolbar"
            android:gravity="center_horizontal">
    
            <TextView
                android:id="@+id/create_skycard"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:clickable="false"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="@color/colorFlLabelFinal"
                android:textStyle="bold" />
    
        </RelativeLayout>
    
        <ScrollView
            android:id="@+id/ScrollView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/myFooter"
            android:layout_below="@+id/header"
            android:fillViewport="true">
    
            <LinearLayout
                android:id="@+id/LinearLayout1"
                style="@style/scrollbar_shape_style"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
    
                <com.wimso.v108.widget.EditText
                ... />
    
            </LinearLayout>
    
        </ScrollView>
    
        <RelativeLayout
            android:id="@+id/myFooter"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true">
    
            <ViewFlipper
                android:id="@+id/viewFlipper1"
                android:layout_width="match_parent"
                android:layout_height="128dp"
                android:layout_marginBottom="5dp">
    
                <include
                    android:id="@+id/cardviewNobuttons"
                    layout="@layout/cardview_nobuttons" />
    
                <include
                    android:id="@+id/cardviewPreviewbuttons"
                    layout="@layout/cardview_previewbuttons" />
    
            </ViewFlipper>
    
        </RelativeLayout>
    
    </RelativeLayout>