如果在android中打开键盘,则SnackBar无法正常显示

时间:2017-09-28 12:20:29

标签: android android-fragments android-keypad android-snackbar

我正在使用小吃店显示信息,如果没有打开键盘,它工作正常。如果打开键盘,显示整个屏幕的小吃栏消息无法正常显示我使用的是Android 5.5。我在活动清单中添加了这一行android:windowSoftInputMode="adjustResize|stateAlwaysHidden",但问题仍然存在。请帮我解决这个问题。请在screen shot下面找到图片。我的零食条形码为Snackbar.make(coordinator,getString(R.string.validation_plz_enter_mandatory_flds, UtilConstants.ERROR_CODE_UI_2000),Snackbar.LENGTH_INDEFINITE).show();

5 个答案:

答案 0 :(得分:2)

这是此问题的正确解决方案:SnackBar show Above the SoftInput (Keyboard)-(打开键盘时)

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

标记到清单的活动标记中。

enter image description here

答案 1 :(得分:1)

您是否按照以下代码初始化了快餐栏:

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

或者您使用过自己的布局?

因为如果我们使用android自己的UI元素(android.R.id.content),它会设法在自己的有效UI上显示。你应该先试试这个。

答案 2 :(得分:1)

使用以下代码隐藏您调用SnackBar的KeyBoard:

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

答案 3 :(得分:1)

将此属性放入清单文件中,进行适当的活动。

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

答案 4 :(得分:0)

如果您将CoordinatorLayoutAppBar一起使用,将NestedLayoutEditText一起使用,则无法使用。 here报告,这是支持库中的错误。

类似的问题here

您可以通过将CoordinatorLayout包装到另一个约束/相对布局(PS我没有尝试过RealtiveLayout,但可以使用ConstraintLayout工作)来使用变通方法,并使用android:fitsSystemWindows="true"。 并提及this答案。