6

I have a vertical scrollable layout with lots of items, working fine.
I am trying to place a new linearlayout to the bottom of the screen that would NOT be part of the scrollable layout.
That is, it would sit on the buttom (like an adview) independent of the scrollable part. I was only able to place it inside the scrollView.
How can I place it below, so it would always visible ?

laszlo
  • 101
  • 1
  • 4

4 Answers4

20

Use a RelativeLayout, and organize it like this:

<?xml version="1.0" encoding="utf-8"?>

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

    <ScrollView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true"
        android:layout_above="@+id/linearLayoutThatDoesNotScroll" >

        <LinearLayout
            android:id="@+id/linearLayoutWithLotofContent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
        </LinearLayout>

    </ScrollView>

    <LinearLayout
        android:id="@+id/linearLayoutThatDoesNotScroll"  
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" >
    </LinearLayout>

</RelativeLayout>

The trick is in the ScrollView placement, at the same time it is aligned with the top of the screen AND above the lower, fixed, LinearLayout. It just works.

castle1971
  • 517
  • 1
  • 5
  • 20
5

something like this :)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" >
    <ScrollView android:id="@+id/scroll_view"
        android:layout_width="fill_parent" 
        android:layout_height="0dp"
        android:layout_weight="1" >
        <LinearLayout android:id="@+id/content"
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" />
    </ScrollView>
    <LinearLayout android:id="@+id/bottom"
        android:layout_width="fill_parent" 
        android:layout_height="10dip" />          
</LinearLayout>

You will add your bottom content to the bottom linearLayout with the android:id=bottom :)

dmon
  • 30,048
  • 8
  • 87
  • 96
Alioooop
  • 465
  • 5
  • 12
  • this is not going to work. Since u give height to fill_parent for the scroll view, it will take the whole screen and there will be nothing left for ur LinearLayout that comes after scroll view. – Sudarshan Bhat Nov 30 '11 at 14:33
  • It works. I think it's much easier than using RelativeLayout. – Dmitry Zaytsev Jun 20 '12 at 22:36
1
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <Button
        android:id="@+id/dialogButtonOK"
        android:layout_width="100px"
        android:layout_height="wrap_content"
        android:text=" Ok "
        android:layout_alignParentBottom="true"
        android:layout_centerInParent="true"
        android:background="@drawable/button_style"
        />
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:id="@+id/scrView"
        android:layout_above="@id/dialogButtonOK"
        android:layout_alignParentTop="true"
       >
            <HorizontalScrollView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" >
                      <TableLayout
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:stretchColumns="*"
                        android:id="@+id/main_table" >
                    </TableLayout>
            </HorizontalScrollView>
    </ScrollView>




</RelativeLayout>

This is worked for me

Banda
  • 11
  • 2
1

If you used a vertical LinearLayout to hold the scrollable layout, then you could add the adview to the LinearLayout below the scrollable layout and it would appear at the bottom of the screen. (assuming your weights are set correctly,and the scroll layout is set to WRAP_CONTENT)

A RelativeLayout would allow you to set the adview to align itself with the bottom of the scrollable layout as well, but you would still need to make sure the scrollable layout was set to WRAP_CONTENT so it didn't automatically take up the entire screen.

Chris Cashwell
  • 22,308
  • 13
  • 63
  • 94
Nyth
  • 582
  • 5
  • 16