diff --git a/src/com/android/settings/SetupChooseLockPassword.java b/src/com/android/settings/SetupChooseLockPassword.java
index 0c7e57f..4274205 100644
--- a/src/com/android/settings/SetupChooseLockPassword.java
+++ b/src/com/android/settings/SetupChooseLockPassword.java
@@ -26,6 +26,7 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.WindowInsets;
 
 /**
  * Setup Wizard's version of ChooseLockPassword screen. It inherits the logic and basic structure
@@ -92,12 +93,15 @@
         }
     }
 
-    public static class SetupChooseLockPasswordFragment extends ChooseLockPasswordFragment {
+    public static class SetupChooseLockPasswordFragment extends ChooseLockPasswordFragment
+            implements View.OnApplyWindowInsetsListener {
 
         @Override
         public View onCreateView(LayoutInflater inflater, ViewGroup container,
                 Bundle savedInstanceState) {
             final View view = inflater.inflate(R.layout.setup_template, container, false);
+            View scrollView = view.findViewById(R.id.bottom_scroll_view);
+            scrollView.setOnApplyWindowInsetsListener(this);
             ViewGroup setupContent = (ViewGroup) view.findViewById(R.id.setup_content);
             inflater.inflate(R.layout.setup_choose_lock_password, setupContent, true);
             return view;
@@ -129,5 +133,20 @@
             SetupChooseLockPassword activity = (SetupChooseLockPassword) getActivity();
             activity.mNavigationBar.getNextButton().setText(text);
         }
+
+        @Override
+        public WindowInsets onApplyWindowInsets(View view, WindowInsets insets) {
+            SetupChooseLockPassword activity = (SetupChooseLockPassword) getActivity();
+            final int bottomMargin = Math.max(insets.getSystemWindowInsetBottom()
+                    - activity.mNavigationBar.getView().getHeight(), 0);
+            ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
+            lp.setMargins(lp.leftMargin, lp.topMargin, lp.rightMargin, bottomMargin);
+            view.setLayoutParams(lp);
+            return insets.replaceSystemWindowInsets(
+                    insets.getSystemWindowInsetLeft(),
+                    insets.getSystemWindowInsetTop(),
+                    insets.getSystemWindowInsetRight(),
+                    0 /* bottom */);
+        }
     }
 }
