Search code examples
androidlistviewbuttontabsfooter

How to get button at the bottom of the screen independent of middle tab content?


I have set of buttons at the bottom of screen below listview. But i am unable to get it exactly in the bottom because i am defining height of listview (tabcontent) which is in middle, if i don't predefine height of tabcontent it would overlay button and if i define it would mess up button position in different screen resolutions. So how can i actually achieve buttons at the bottom of screen independent of middle tab content it ? Below is my code :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/formLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="0dp">

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true" />

            <View
                android:id="@+id/separator"
                android:layout_width="fill_parent"
                android:layout_height="2dip"
                android:layout_below="@android:id/tabs" />

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="465dip"
                android:layout_above="@+id/btnSend"
                android:layout_below="@+id/separator" >

                <!-- Scrollview for message data -->

                <ScrollView
                    android:id="@+id/formTab"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:scrollbars="vertical" >

                    <LinearLayout
                        android:id="@+id/formLayout"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:orientation="vertical" >

                        <View
                            android:layout_width="fill_parent"
                            android:layout_height="5dip" />
                    </LinearLayout>
                </ScrollView>
            </FrameLayout>
        </RelativeLayout>
    </TabHost>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_below="@+id/tabcontent"
        >

        <Button
            android:id="@+id/home"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:layout_weight="1"
            android:text="Home"
            android:textColor="#000000" />

        <Button
            android:id="@+id/messages"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:layout_weight="1"
            android:text="Messages"
            android:textColor="#000000"/>

        <Button
            android:id="@+id/history"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:layout_weight="1"
            android:text="History"
            android:textColor="#000000" />

        <Button
            android:id="@+id/settings"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:layout_weight="1"
            android:text="Settings"
            android:textColor="#000000" />

        <Button
            android:id="@+id/support"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:layout_weight="1"
            android:text="Support"
            android:textColor="#000000" />
    </LinearLayout>

</LinearLayout>

Solution

  • Your LinearLayout with buttons is inside another LinearLayout.

    All you have to do is to change your root layout to RelativeLayout then the parameter android:layout_alignParentBottom="true" of your LinearLayout with buttons will work.

    Also you should make the root RelativeLayout to fill the parent.

    The whole layout will look like this:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/formLayout"
        android:layout_width="fill_parent"
        android:layout_height="match_parent" >
    
    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="0dp">
    
            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true" />
    
            <View
                android:id="@+id/separator"
                android:layout_width="fill_parent"
                android:layout_height="2dip"
                android:layout_below="@android:id/tabs" />
    
            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="465dip"
                android:layout_above="@+id/btnSend"
                android:layout_below="@+id/separator" >
    
                <!-- Scrollview for message data -->
    
                <ScrollView
                    android:id="@+id/formTab"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:scrollbars="vertical" >
    
                    <LinearLayout
                        android:id="@+id/formLayout"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:orientation="vertical" >
    
                        <View
                            android:layout_width="fill_parent"
                            android:layout_height="5dip" />
                    </LinearLayout>
                </ScrollView>
            </FrameLayout>
        </RelativeLayout>
    </TabHost>
    
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_below="@+id/tabcontent"
        >
    
        <Button
            android:id="@+id/home"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:layout_weight="1"
            android:text="Home"
            android:textColor="#000000" />
    
        <Button
            android:id="@+id/messages"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:layout_weight="1"
            android:text="Messages"
            android:textColor="#000000"/>
    
        <Button
            android:id="@+id/history"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:layout_weight="1"
            android:text="History"
            android:textColor="#000000" />
    
        <Button
            android:id="@+id/settings"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:layout_weight="1"
            android:text="Settings"
            android:textColor="#000000" />
    
        <Button
            android:id="@+id/support"
            android:layout_width="wrap_content"
            android:layout_height="50dip"
            android:layout_weight="1"
            android:text="Support"
            android:textColor="#000000" />
    </LinearLayout>