user10022975
user10022975

Reputation:

How do i make my buttons fixed at the top with scroll view?

How do i make my buttons fixed to the top of my screen and my navigation bar to the bottom of my screen? I have already done the android:layout_alignParentTop="true" and android:layout_alignParentBottom="true">

which doesn't help as they still don't follow along when i scroll up or down.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#393939"
tools:context=".Main2Activity">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<RelativeLayout
    android:id="@+id/back"
    android:layout_width="match_parent"
    android:layout_height="1000dp">

    <RelativeLayout
        android:id="@+id/buttons"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:gravity="center"
        android:layout_gravity="center">

        <Button
            android:id="@+id/up_coming"
            android:layout_width="140dp"
            android:layout_height="44dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:background="#333333"
            android:text="Upcoming" />


        <Button
            android:id="@+id/trending_button"
            android:layout_width="140dp"
            android:layout_height="44dp"
            android:layout_alignParentEnd="true"
            android:layout_alignParentTop="true"
            android:layout_marginEnd="0dp"
            android:background="#333333"
            android:text="Trending" />

        <Button
            android:id="@+id/now_showing"
            android:layout_width="140dp"
            android:layout_height="44dp"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:background="#6E6E6E"
            android:text="Now Showing" />

    </RelativeLayout>

    <ImageView
        android:id="@+id/imageView5"
        android:layout_width="184dp"
        android:layout_height="200dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentTop="true"
        android:layout_marginEnd="20dp"
        android:layout_marginTop="69dp"
        app:srcCompat="@drawable/fpp3k01riyq01" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="142dp"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_below="@+id/imageView5"
        android:layout_marginEnd="39dp"
        android:text="Incredibles 2"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="194dp"
        android:layout_marginStart="29dp"
        android:text="Avengers: Infinity War"
        android:textColor="#FFFFFF" />



    <ImageView
        android:id="@+id/imageView6"
        android:layout_width="184dp"
        android:layout_height="200dp"
        android:layout_alignParentStart="true"
        android:layout_alignTop="@+id/imageView5"
        app:srcCompat="@drawable/deadpool2" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="449dp"
        android:layout_toStartOf="@+id/imageView5"
        android:text="Deadpool 2"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignStart="@+id/imageView5"
        android:layout_marginBottom="452dp"
        android:text="Rampage"
        android:textColor="#FFFFFF" />

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="184dp"
        android:layout_height="200dp"
        android:layout_alignParentTop="true"
        android:layout_alignStart="@+id/imageView5"
        android:layout_marginTop="321dp"
        app:srcCompat="@drawable/rampage_thumbnail" />

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/main_nav"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_gravity="bottom"
        android:layout_marginBottom="135dp"
        app:itemBackground="@drawable/nav_bar_gradient"
        app:itemIconTint="@color/nav_item_colors"
        app:itemTextColor="@color/nav_item_colors"
        app:menu="@menu/nav_items"></android.support.design.widget.BottomNavigationView>

    <FrameLayout
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:layout_alignBottom="@id/main_nav">


        <android.support.design.widget.BottomNavigationView
            android:layout_width="match_parent"
            android:layout_height="match_parent">



        </android.support.design.widget.BottomNavigationView>

    </FrameLayout>

</RelativeLayout>
</ScrollView>
</RelativeLayout>

Upvotes: 1

Views: 1561

Answers (2)

Marcos Vasconcelos
Marcos Vasconcelos

Reputation: 18276

Following my comment: Modify you layout so the components are outisde of ScrollView, inside scrollview add only scrollable content that you wish

The usual is like inside root LinearLayout (VERTICAL)

  • Then add HeaderView with WRAP on height
  • Then add ScrollView with weight=1 (so it takes all rest of space on layout)
  • Then add BottomView with WRAP on height

Inside the ScrollView you add a larger componenet to be scrollable.

This way Heder and Bottom are fixed and you can scroll the content inside the scroll.

Upvotes: 2

Moustafa EL-Saghier
Moustafa EL-Saghier

Reputation: 1931

Have you tried to remove your button outside from scroll view?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#393939"
tools:context=".Main2Activity">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<RelativeLayout
    android:id="@+id/back"
    android:layout_width="match_parent"
    android:layout_height="1000dp">

        <Button
            android:id="@+id/up_coming"
            android:layout_width="140dp"
            android:layout_height="44dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:background="#333333"
            android:text="Upcoming" />
    <RelativeLayout
        android:id="@+id/buttons"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:gravity="center"
        android:layout_gravity="center">

        <Button
            android:id="@+id/trending_button"
            android:layout_width="140dp"
            android:layout_height="44dp"
            android:layout_alignParentEnd="true"
            android:layout_alignParentTop="true"
            android:layout_marginEnd="0dp"
            android:background="#333333"
            android:text="Trending" />

        <Button
            android:id="@+id/now_showing"
            android:layout_width="140dp"
            android:layout_height="44dp"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:background="#6E6E6E"
            android:text="Now Showing" />

    </RelativeLayout>

    <ImageView
        android:id="@+id/imageView5"
        android:layout_width="184dp"
        android:layout_height="200dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentTop="true"
        android:layout_marginEnd="20dp"
        android:layout_marginTop="69dp"
        app:srcCompat="@drawable/fpp3k01riyq01" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="142dp"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_below="@+id/imageView5"
        android:layout_marginEnd="39dp"
        android:text="Incredibles 2"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="194dp"
        android:layout_marginStart="29dp"
        android:text="Avengers: Infinity War"
        android:textColor="#FFFFFF" />



    <ImageView
        android:id="@+id/imageView6"
        android:layout_width="184dp"
        android:layout_height="200dp"
        android:layout_alignParentStart="true"
        android:layout_alignTop="@+id/imageView5"
        app:srcCompat="@drawable/deadpool2" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="449dp"
        android:layout_toStartOf="@+id/imageView5"
        android:text="Deadpool 2"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignStart="@+id/imageView5"
        android:layout_marginBottom="452dp"
        android:text="Rampage"
        android:textColor="#FFFFFF" />

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="184dp"
        android:layout_height="200dp"
        android:layout_alignParentTop="true"
        android:layout_alignStart="@+id/imageView5"
        android:layout_marginTop="321dp"
        app:srcCompat="@drawable/rampage_thumbnail" />

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/main_nav"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_gravity="bottom"
        android:layout_marginBottom="135dp"
        app:itemBackground="@drawable/nav_bar_gradient"
        app:itemIconTint="@color/nav_item_colors"
        app:itemTextColor="@color/nav_item_colors"
        app:menu="@menu/nav_items"></android.support.design.widget.BottomNavigationView>

    <FrameLayout
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:layout_alignBottom="@id/main_nav">


        <android.support.design.widget.BottomNavigationView
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        </android.support.design.widget.BottomNavigationView>

    </FrameLayout>

</RelativeLayout>
</ScrollView>
</RelativeLayout>

I suggest to use ContraintLayout for future use instead of Relative Layout

Upvotes: 0

Related Questions