Working with scroll down in Bottom Sheet

Amar picture Amar · Nov 1, 2016 · Viewed 11.1k times · Source

I want to scroll the view down when the bottom sheet is fully up (Dragged up to complete screen). It works good when it scrolls up but it does not work when it scrolls down. Rather, the whole bottom sheet comes down. Any way out?

Main Activity

import android.os.Bundle;
import android.support.design.widget.BottomSheetBehavior;
import android.support.design.widget.BottomSheetDialog;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.TypedValue;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button fab = (Button) findViewById(R.id.button);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                BottomSheetDialog bottomSheetDialog  = new BottomSheetDialog(MainActivity.this);
                View parentView = getLayoutInflater().inflate(R.layout.sheetlayout,null);
                bottomSheetDialog.setContentView(parentView);
                BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from((View) parentView.getParent());
                bottomSheetBehavior.setPeekHeight(
                        (int) TypedValue.applyDimension(
                                TypedValue.COMPLEX_UNIT_DIP,100,getResources().getDisplayMetrics()
                        )
                );
                bottomSheetDialog.show();

            }
        });
    }
}

SheetLayout.xml

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

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

    <Button
        android:text="button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button1" />

    <Button
        android:text="button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button2" />

    <Button
        android:text="button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button3" />

    <Button
        android:text="button4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button4" />

    <Button
        android:text="button5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button5" />

    <Button
        android:text="button6"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button18" />

    <Button
        android:text="button7"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button7" />

    <Button
        android:text="button8"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button8" />

    <Button
        android:text="button9"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button9" />

    <Button
        android:text="button10"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button10" />

    <Button
        android:text="button11"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button11" />

    <Button
        android:text="button12"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button12" />

    <Button
        android:text="button13"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button13" />

    <Button
        android:text="button14"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button14" />

    <Button
        android:text="button15"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button15" />

    <Button
        android:text="button16"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button16" />

    <Button
        android:text="button17"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button17" />

    <Button
        android:text="button18"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button6" />
</LinearLayout>
    </ScrollView>

Edit1

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


<ScrollView
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent">

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

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

        <Button
            android:text="button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button1" />

        <Button
            android:text="button2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button2" />

        <Button
            android:text="button3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button3" />

        <Button
            android:text="button4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button4" />

        <Button
            android:text="button5"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button5" />

        <Button
            android:text="button6"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button18" />

        <Button
            android:text="button7"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button7" />

        <Button
            android:text="button8"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button8" />

        <Button
            android:text="button9"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button9" />

        <Button
            android:text="button10"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button10" />

        <Button
            android:text="button11"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button11" />

        <Button
            android:text="button12"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button12" />

        <Button
            android:text="button13"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button13" />

        <Button
            android:text="button14"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button14" />

        <Button
            android:text="button15"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button15" />

        <Button
            android:text="button16"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button16" />

        <Button
            android:text="button17"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button17" />

        <Button
            android:text="button18"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button6" />
    </LinearLayout>
</android.support.design.widget.CoordinatorLayout>
    </ScrollView>

Edit2

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

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ScrollView
        android:layout_width="match_parent"
        app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
        android:layout_height="match_parent">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <Button
            android:text="@string/button1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:id="@+id/button1"
            android:layout_weight="0.66" />

        <Button
            android:text="button2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button2" />

        <Button
            android:text="button3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button3" />

        <Button
            android:text="button4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button4" />

        <Button
            android:text="button5"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button5" />

        <Button
            android:text="button6"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button18" />

        <Button
            android:text="button7"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button7" />

        <Button
            android:text="button8"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button8" />

        <Button
            android:text="button9"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button9" />

        <Button
            android:text="@string/button10"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button10" />

        <Button
            android:text="@string/button11"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button11" />

        <Button
            android:text="@string/button12"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button12" />

        <Button
            android:text="button13"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button13" />

        <Button
            android:text="button14"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button14" />

        <Button
            android:text="button15"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button15" />

        <Button
            android:text="button16"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button16" />

        <Button
            android:text="button17"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button17" />

        <Button
            android:text="button18"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button6" />
    </LinearLayout>
    </ScrollView>
</android.support.design.widget.CoordinatorLayout>

Answer

Rajesh Nasit picture Rajesh Nasit · Jan 13, 2018

I had same problem and fixed it using android.support.v4.widget.NestedScrollView. below is my code for bottom sheet layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="8dp"
    android:paddingTop="8dp">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:foreground="?attr/selectableItemBackground"
        android:orientation="horizontal"
        android:paddingBottom="8dp"
        android:paddingLeft="@dimen/activity_margin"
        android:paddingRight="@dimen/activity_margin"
        android:paddingTop="8dp">

        <ImageView
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:layout_marginRight="32dp"
            android:src="@drawable/ic_email_black_24dp"
            android:tint="#737373" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="Email a Copy"
            android:textColor="#737373"
            android:textSize="16sp" />

    </LinearLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <WebView
            android:id="@+id/webpage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"></WebView>
    </android.support.v4.widget.NestedScrollView>
</LinearLayout>