используйте android:windowSoftInputMode="adjustResize"
в манифесте для действия
и поместите содержимое, которое вы хотите прокрутить, в Scrollview / NestedScrollView
и создайте представления (те, которые вы хотите прикрепить внизу) ниже прокрутите как alignToBottom и укажите прокрутку, чтобы быть над этими представлениями.
Проверьте приведенный ниже пример, вы можете создать похожий макет в соответствии с вашими требованиями.
Попытайтесь понять, как это работает, вместо RelativeLayout можно использовать любое представление контейнера.
Пример: (для макета «Деятельность / фрагмент»)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlRoot"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--Scrollable view: RecyclerView, NestedScrollView, Webview etc-->
<ScrollView
android:id="@+id/nsScroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/btnNext">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
.
.
.
<AutoCompleteTextView
android:id="@+id/etDob"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionDone"
android:inputType="date"
android:maxLines="1" />
.
.
.
</LinearLayout>
</ScrollView>
<!--Sticks at the bottom-->
<Button
android:id="@+id/btnNext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:textColor="@android:color/white" />