I have an edit text inside a bottom sheet fragment. when the focus come on the edit text the layout goes up . i tried
android:windowSoftInputMode="adjustNothing"
its work for the parent activity but not for the dialog fragment.
This is my bottom sheet class:
public class CustomBottomSheetDialogFragment extends BottomSheetDialogFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.content_dialog_bottom_sheet, container, false); getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); return v; } }
initial state
when keyboard comes up
i want the layout to always stay on the bottom the keyboard should come above the layout.
check the layout
<?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" android:id="@+id/bottomSheetLayout" android:layout_width="match_parent" android:layout_height="400dp" android:background="@android:color/holo_blue_light" android:padding="@dimen/activity_vertical_margin" app:behavior_hideable="true" app:behavior_peekHeight="60dp" app:layout_behavior="@string/bottom_sheet_behavior"> <EditText android:id="@+id/edt" android:layout_width="match_parent" android:layout_height="40dp" android:background="@android:color/white" android:padding="10dp" /> <TextView android:layout_width="wrap_content" android:layout_height="250dp" android:layout_below="@+id/edt" />
Setting android:isScrollContainer = "false" inside the ScrollView worked for me. According to the documentation, settings "isScrollContainer" to true means that the scroll view can be resized to shrink its overall window so that there is space for an input method.
HIDE_IMPLICIT_ONLY, 0); Here pass HIDE_IMPLICIT_ONLY at the position of showFlag and 0 at the position of hiddenFlag . It will forcefully close soft Keyboard.
Use this in your
Dialog Fragment
.
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
Inside
onCreateView
like this.
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.dialog_fragment, container); //set to adjust screen height automatically, when soft keyboard appears on screen getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); return rootView; }
EDIT 1:
I have made some changes with what
layout
you are using make it apply in your currentlayout
.
Here is layout
.
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/bottom_sheet" android:layout_width="match_parent" android:layout_height="400dp" android:layout_gravity="bottom" android:background="@android:color/holo_blue_light" android:padding="10dp" app:behavior_hideable="true" app:behavior_peekHeight="60dp" app:layout_behavior="android.support.design.widget.BottomSheetBehavior"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:isScrollContainer="false" android:scrollbars="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/edt" android:layout_width="match_parent" android:layout_height="40dp" android:background="@android:color/white" android:padding="10dp" /> <TextView android:layout_width="wrap_content" android:layout_height="250dp" android:layout_below="@+id/edt" /> </LinearLayout> </ScrollView> </FrameLayout>
Here is Fragment
.
public class TestFragment extends BottomSheetDialogFragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = inflater.inflate(R.layout.test4, container, false); return v; }
EDIT 2:
You can try android:elevation="50dp" property for shadow above Bottom Sheet give a try with that in frame layout.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With