Mahdi-Malv
Mahdi-Malv

Reputation: 19220

How to Scroll A Part of An Activity

I have a question that i couldn't Find Any Answer For it. How can I Make An Layout Scrolling And Make Another Layout that doesn't Scroll? On the other hand i want to make a layout Including Some buttons that scrolls if necessary and i want to put Two buttons at the bottom of the screen and i don't want them to disappear when scrolling.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@drawable/background"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:context="com.myname.myapp.MainActivity">

    // a bunch of Buttons and TextViews

    </RelativeLayout>
</scrollView>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

      // two Moveless Buttons

</RelativeLayout>

But it doesn't Work.

Upvotes: 0

Views: 571

Answers (3)

petey
petey

Reputation: 17140

Make your root a vertical linearlayout with a scrollview, to hold the scrollable views, and a RelativeLayout, to hold your buttons.

You can take advantage of the LinearLayout's weighting ability by applying a weight of 1 to the Scrollview so it takes up as much room it can while the button-holding-RelativeLayout will be the size of your biggest button.

Here is an example:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ScrollView
        android:background="@drawable/background"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            tools:context="com.myname.myapp.MainActivity">

        // a bunch of Buttons an TextViews

        </RelativeLayout>
    </ScrollView>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

          // two Moveless Buttons

    </RelativeLayout>
</LinearLayout>

HTHS!

Upvotes: 1

Esperanz0
Esperanz0

Reputation: 1586

I'm not sure I understand what You want to do. But try this and give feedback

( code example not tested in Android Studio)

         <?xml version="1.0" encoding="utf-8"?> 
   <RelativeLayout
       android:layout_width="match_parent"
       android:layout_height="match_parent"
                 >
        <ScrollView
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:background="@drawable/background"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    tools:context="com.myname.myapp.MainActivity">

                // a bunch of Buttons an TextViews


                </RelativeLayout> 
            </ScrollView>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="80dp (for example)>"
                   android:layout_alignParentBottom="true">

                  // two Moveless Buttons

            </RelativeLayout>
 </RelativeLayout>

Upvotes: 1

ucsunil
ucsunil

Reputation: 7494

Your ScrollView has width and height that matches the parent. This means it takes up the entire space available leaving nothing for the RelativeLayout. You probably want to wrap what you already have inside a LinearLayout and then use layout_weight attribute to divide the space up.

Upvotes: 3

Related Questions