diff --git a/samples/SupportDesignDemos/AndroidManifest.xml b/samples/SupportDesignDemos/AndroidManifest.xml
index 3a4dbdf..3cae8ad 100644
--- a/samples/SupportDesignDemos/AndroidManifest.xml
+++ b/samples/SupportDesignDemos/AndroidManifest.xml
@@ -199,8 +199,17 @@
             </intent-filter>
         </activity>
 
-        <activity android:name=".widget.BottomSheetUsage"
-                  android:label="@string/design_bottomsheet"
+        <activity android:name=".widget.BottomSheetPersistent"
+                  android:label="@string/design_bottomsheet_persistent"
+                  android:theme="@style/Theme.Design">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="com.example.android.support.design.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".widget.BottomSheetHideable"
+                  android:label="@string/design_bottomsheet_hideable"
                   android:theme="@style/Theme.Design">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/samples/SupportDesignDemos/res/layout/design_bottom_sheet.xml b/samples/SupportDesignDemos/res/layout/design_bottom_sheet.xml
deleted file mode 100644
index 56197ea..0000000
--- a/samples/SupportDesignDemos/res/layout/design_bottom_sheet.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<android.support.design.widget.CoordinatorLayout
-        android:id="@+id/coordinator"
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:app="http://schemas.android.com/apk/res/com.example.android.support.design"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-    <!--
-        This is the bottom sheet. You can use any View as a bottom sheet by marking it with
-        app:layout_behavior as BottomSheetBehavior.
-    -->
-    <LinearLayout
-            android:id="@+id/bottom_sheet"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_marginLeft="@dimen/bottom_sheet_horizontal_margin"
-            android:layout_marginRight="@dimen/bottom_sheet_horizontal_margin"
-            android:background="?android:attr/windowBackground"
-            android:elevation="16dp"
-            android:minHeight="128dp"
-            android:orientation="vertical"
-            app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
-            app:behavior_peekHeight="128dp">
-
-        <TextView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="@string/bottom_sheet"
-                android:paddingTop="8dp"
-                android:paddingLeft="16dp"
-                android:paddingRight="16dp"
-                android:paddingBottom="8dp"
-                style="@style/TextAppearance.AppCompat.Title"/>
-
-        <View
-                android:layout_width="match_parent"
-                android:layout_height="1dp"
-                android:background="@android:color/darker_gray"/>
-
-        <android.support.v4.widget.NestedScrollView
-                android:id="@+id/scroll"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent">
-
-            <TextView
-                    android:id="@+id/dialogue"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:padding="16dp"
-                    style="@style/TextAppearance.AppCompat.Body1"/>
-
-        </android.support.v4.widget.NestedScrollView>
-
-    </LinearLayout>
-
-</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/samples/SupportDesignDemos/res/layout/design_bottom_sheet_hideable.xml b/samples/SupportDesignDemos/res/layout/design_bottom_sheet_hideable.xml
new file mode 100644
index 0000000..18a543e
--- /dev/null
+++ b/samples/SupportDesignDemos/res/layout/design_bottom_sheet_hideable.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<android.support.design.widget.CoordinatorLayout
+        android:id="@+id/coordinator"
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:app="http://schemas.android.com/apk/res/com.example.android.support.design"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+    <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+            android:padding="16dp">
+
+        <TextView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/bottomsheet_hideable"
+                style="@style/TextAppearance.AppCompat.Headline"/>
+
+        <Button
+                android:id="@+id/toggle"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="16dp"
+                android:freezesText="true"
+                android:text="@string/bottomsheet_hide"/>
+
+    </LinearLayout>
+
+    <!--
+        This is the bottom sheet. You can use any View as a bottom sheet by marking it with
+        app:layout_behavior as BottomSheetBehavior.
+    -->
+    <LinearLayout
+            android:id="@+id/bottom_sheet"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="@dimen/bottom_sheet_horizontal_margin"
+            android:layout_marginRight="@dimen/bottom_sheet_horizontal_margin"
+            android:background="?android:attr/windowBackground"
+            android:elevation="@dimen/bottom_sheet_elevation"
+            android:minHeight="@dimen/bottom_sheet_peek_height"
+            android:orientation="vertical"
+            app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
+            app:behavior_peekHeight="@dimen/bottom_sheet_peek_height"
+            app:behavior_hideable="true">
+
+        <include layout="@layout/include_bottom_sheet"/>
+
+    </LinearLayout>
+
+    <TextView
+            android:id="@+id/slide_offset"
+            android:layout_width="128dp"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top|right"
+            android:padding="8dp"
+            android:elevation="24dp"
+            android:clickable="false"
+            style="@style/TextAppearance.AppCompat.Body1"/>
+
+</android.support.design.widget.CoordinatorLayout>
diff --git a/samples/SupportDesignDemos/res/layout/design_bottom_sheet_persistent.xml b/samples/SupportDesignDemos/res/layout/design_bottom_sheet_persistent.xml
new file mode 100644
index 0000000..5a8139cd
--- /dev/null
+++ b/samples/SupportDesignDemos/res/layout/design_bottom_sheet_persistent.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<android.support.design.widget.CoordinatorLayout
+        android:id="@+id/coordinator"
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:app="http://schemas.android.com/apk/res/com.example.android.support.design"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+    <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/bottomsheet_persistent"
+            android:padding="16dp"
+            style="@style/TextAppearance.AppCompat.Headline"/>
+
+    <!--
+        This is the bottom sheet. You can use any View as a bottom sheet by marking it with
+        app:layout_behavior as BottomSheetBehavior.
+    -->
+    <LinearLayout
+            android:id="@+id/bottom_sheet"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="@dimen/bottom_sheet_horizontal_margin"
+            android:layout_marginRight="@dimen/bottom_sheet_horizontal_margin"
+            android:background="?android:attr/windowBackground"
+            android:elevation="@dimen/bottom_sheet_elevation"
+            android:minHeight="@dimen/bottom_sheet_peek_height"
+            android:orientation="vertical"
+            app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
+            app:behavior_peekHeight="@dimen/bottom_sheet_peek_height">
+
+        <include layout="@layout/include_bottom_sheet"/>
+
+    </LinearLayout>
+
+</android.support.design.widget.CoordinatorLayout>
diff --git a/samples/SupportDesignDemos/res/layout/include_bottom_sheet.xml b/samples/SupportDesignDemos/res/layout/include_bottom_sheet.xml
new file mode 100644
index 0000000..ab00ece
--- /dev/null
+++ b/samples/SupportDesignDemos/res/layout/include_bottom_sheet.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<merge xmlns:tools="http://schemas.android.com/tools"
+       xmlns:android="http://schemas.android.com/apk/res/android"
+       tools:showIn="@layout/design_bottom_sheet">
+
+    <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/bottom_sheet"
+            android:paddingTop="8dp"
+            android:paddingLeft="16dp"
+            android:paddingRight="16dp"
+            android:paddingBottom="8dp"
+            style="@style/TextAppearance.AppCompat.Title"/>
+
+    <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="@android:color/darker_gray"/>
+
+    <android.support.v4.widget.NestedScrollView
+            android:id="@+id/scroll"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+
+        <TextView
+                android:id="@+id/dialogue"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:padding="16dp"
+                style="@style/TextAppearance.AppCompat.Body1"/>
+
+    </android.support.v4.widget.NestedScrollView>
+
+</merge>
diff --git a/samples/SupportDesignDemos/res/values/dimens.xml b/samples/SupportDesignDemos/res/values/dimens.xml
index ac8777c..dc3a5f6 100644
--- a/samples/SupportDesignDemos/res/values/dimens.xml
+++ b/samples/SupportDesignDemos/res/values/dimens.xml
@@ -16,4 +16,6 @@
 -->
 <resources>
     <dimen name="bottom_sheet_horizontal_margin">0dp</dimen>
+    <dimen name="bottom_sheet_elevation">16dp</dimen>
+    <dimen name="bottom_sheet_peek_height">128dp</dimen>
 </resources>
diff --git a/samples/SupportDesignDemos/res/values/strings.xml b/samples/SupportDesignDemos/res/values/strings.xml
index c3a981a..4c660ba 100644
--- a/samples/SupportDesignDemos/res/values/strings.xml
+++ b/samples/SupportDesignDemos/res/values/strings.xml
@@ -21,7 +21,8 @@
     <string name="design_navigation">NavigationView/Usage</string>
     <string name="design_tabs_basic">TabLayout/Usage</string>
     <string name="design_text_input">Text Input</string>
-    <string name="design_bottomsheet">BottomSheet/Usage</string>
+    <string name="design_bottomsheet_persistent">BottomSheet/Persistent</string>
+    <string name="design_bottomsheet_hideable">BottomSheet/Hideable</string>
 
     <string name="fab_size_normal">Normal size</string>
     <string name="fab_size_mini">Mini size</string>
@@ -83,5 +84,9 @@
     <string name="menu_settings">Settings</string>
 
     <string name="bottom_sheet">Bottom sheet</string>
+    <string name="bottomsheet_persistent">Persistent</string>
+    <string name="bottomsheet_hideable">Hideable</string>
+    <string name="bottomsheet_hide">Hide</string>
+    <string name="bottomsheet_show">Show</string>
 
 </resources>
diff --git a/samples/SupportDesignDemos/src/com/example/android/support/design/widget/BottomSheetHideable.java b/samples/SupportDesignDemos/src/com/example/android/support/design/widget/BottomSheetHideable.java
new file mode 100644
index 0000000..c3d1960
--- /dev/null
+++ b/samples/SupportDesignDemos/src/com/example/android/support/design/widget/BottomSheetHideable.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.support.design.widget;
+
+import com.example.android.support.design.R;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.design.widget.BottomSheetBehavior;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+
+/**
+ * This demonstrates basic usage of hideable {@link BottomSheetBehavior}.
+ */
+public class BottomSheetHideable extends BottomSheetUsageBase {
+
+    private TextView mTextSlideOffset;
+
+    private Button mToggle;
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.design_bottom_sheet_hideable;
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mTextSlideOffset = (TextView) findViewById(R.id.slide_offset);
+        mToggle = (Button) findViewById(R.id.toggle);
+        mToggle.setOnClickListener(mOnClickListener);
+        mBehavior.setBottomSheetListener(new BottomSheetBehavior.BottomSheetListener() {
+            @Override
+            public void onStateChanged(@BottomSheetBehavior.State int newState) {
+                switch (newState) {
+                    case BottomSheetBehavior.STATE_HIDDEN:
+                        mToggle.setText(R.string.bottomsheet_show);
+                        mToggle.setEnabled(true);
+                        break;
+                    case BottomSheetBehavior.STATE_EXPANDED:
+                    case BottomSheetBehavior.STATE_COLLAPSED:
+                        mToggle.setText(R.string.bottomsheet_hide);
+                        mToggle.setEnabled(true);
+                        break;
+                }
+            }
+
+            @Override
+            public void onSlide(float slideOffset) {
+                mTextSlideOffset.setText(String.valueOf(slideOffset));
+            }
+        });
+    }
+
+    private View.OnClickListener mOnClickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            if (v.getId() == R.id.toggle && mBehavior != null) {
+                mToggle.setEnabled(false);
+                if (mBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN) {
+                    mBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
+                } else {
+                    mBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
+                }
+            }
+        }
+    };
+
+}
diff --git a/samples/SupportDesignDemos/src/com/example/android/support/design/widget/BottomSheetPersistent.java b/samples/SupportDesignDemos/src/com/example/android/support/design/widget/BottomSheetPersistent.java
new file mode 100644
index 0000000..82b6c7d
--- /dev/null
+++ b/samples/SupportDesignDemos/src/com/example/android/support/design/widget/BottomSheetPersistent.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.support.design.widget;
+
+import com.example.android.support.design.R;
+
+import android.support.design.widget.BottomSheetBehavior;
+
+
+/**
+ * This demonstrates basic usage of persistent {@link BottomSheetBehavior}.
+ */
+public class BottomSheetPersistent extends BottomSheetUsageBase {
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.design_bottom_sheet_persistent;
+    }
+
+}
diff --git a/samples/SupportDesignDemos/src/com/example/android/support/design/widget/BottomSheetUsage.java b/samples/SupportDesignDemos/src/com/example/android/support/design/widget/BottomSheetUsageBase.java
similarity index 71%
rename from samples/SupportDesignDemos/src/com/example/android/support/design/widget/BottomSheetUsage.java
rename to samples/SupportDesignDemos/src/com/example/android/support/design/widget/BottomSheetUsageBase.java
index 21f6ffe..f13e78b 100644
--- a/samples/SupportDesignDemos/src/com/example/android/support/design/widget/BottomSheetUsage.java
+++ b/samples/SupportDesignDemos/src/com/example/android/support/design/widget/BottomSheetUsageBase.java
@@ -20,6 +20,7 @@
 import com.example.android.support.design.Shakespeare;
 
 import android.os.Bundle;
+import android.support.annotation.LayoutRes;
 import android.support.annotation.Nullable;
 import android.support.design.widget.BottomSheetBehavior;
 import android.support.v7.app.AppCompatActivity;
@@ -30,25 +31,31 @@
 /**
  * This demonstrates basic usage of {@link BottomSheetBehavior}.
  */
-public class BottomSheetUsage extends AppCompatActivity {
+abstract class BottomSheetUsageBase extends AppCompatActivity {
 
-    private BottomSheetBehavior<LinearLayout> mBehavior;
+    protected BottomSheetBehavior<LinearLayout> mBehavior;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.design_bottom_sheet);
+        setContentView(getLayoutId());
         ((TextView) findViewById(R.id.dialogue)).setText(TextUtils.concat(Shakespeare.DIALOGUE));
         mBehavior = BottomSheetBehavior.from((LinearLayout) findViewById(R.id.bottom_sheet));
     }
 
     @Override
     public void onBackPressed() {
-        if (mBehavior != null && mBehavior.getState() != BottomSheetBehavior.STATE_COLLAPSED) {
-            mBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
-        } else {
-            super.onBackPressed();
+        if (mBehavior != null) {
+            int state = mBehavior.getState();
+            if (state != BottomSheetBehavior.STATE_COLLAPSED &&
+                    state != BottomSheetBehavior.STATE_HIDDEN) {
+                mBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
+                return;
+            }
         }
+        super.onBackPressed();
     }
 
+    protected abstract int getLayoutId();
+
 }
