Ganesh P
Ganesh P

Reputation: 196

SnackBar is not showing properly if the keyboard is opened in android

I am using snack bar for displaying information, it is working fine if keyboard is not opened. If keyboard is opened the snack bar message displaying whole screen not displaying properly i am using android 5.5. I added this line android:windowSoftInputMode="adjustResize|stateAlwaysHidden" in my activity manifest but still same issue. Please help me for this issue. Please find the image belowscreen shot. My snack bar code is Snackbar.make(coordinator,getString(R.string.validation_plz_enter_mandatory_flds, UtilConstants.ERROR_CODE_UI_2000),Snackbar.LENGTH_INDEFINITE).show();

Upvotes: 4

Views: 5191

Answers (5)

Adolf Dsilva
Adolf Dsilva

Reputation: 14340

If your using CoordinatorLayout with AppBar and NestedLayout with EditText inside, it won't work. This is a bug in support lib, reported here.

Similar question here.

You can use a workaround by wrapping the CoordinatorLayout with another Constraint/Relative Layout (PS I've not tried RealtiveLayout but works using ConstraintLayout) and use android:fitsSystemWindows="true". with referenced to this answer.

Upvotes: 1

Prince Dholakiya
Prince Dholakiya

Reputation: 3401

This is the Correct Solution of this problem: SnackBar show Above the SoftInput (Keyboard) - (when Keyboard is Open)

<activity android:name=".YourActivity"
    android:windowSoftInputMode="adjustResize"/> 

tag into your activity tag of the manifest.

enter image description here

Upvotes: 6

nAkhmedov
nAkhmedov

Reputation: 3592

Put this property in your Manifest file to your proper activity.

        <activity android:name=".YourActivity"
              android:windowSoftInputMode="adjustResize"/>

Upvotes: 2

Shashwat Gupta
Shashwat Gupta

Reputation: 872

Just Hide the KeyBoard where you call your SnackBar using below code:

  InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(parentLayout.getWindowToken(), 0); // parentLayout is your main layout of an activity

Upvotes: 0

Android Geek
Android Geek

Reputation: 9225

Have you initialized your snackbar like below code:

snackbar = Snackbar.make(findViewById(android.R.id.content), <Your message>, Snackbar.LENGTH_LONG);

or you have used your own layout??

Because if we use android's own UI element(android.R.id.content) it manages to show on valid UI of their own. You should first try this.

Upvotes: 2

Related Questions