显示软键盘时 Snackbar 会扩展
Snackbar expands when soft keyboard is showing
我发现了一个问题,当软键盘启动时,快餐栏会自行扩展以适应屏幕上列表视图的大小。
Snackbar 有问题
普通小吃店(键盘未启动)
我已经能够通过以编程方式设置高度来稍微解决这个问题,但是文本从小吃栏中消失了,我不知道如何将它添加回去。
ViewGroup.LayoutParams lp = snackbarView.getLayoutParams();
lp.height = 150;
snackbarView.setLayoutParams(lp);
添加小吃店如下:
mConnectionLostSnackbar = Snackbar.make(view, mConnectionLostString, Snackbar.LENGTH_INDEFINITE);
final View snackbarView = mConnectionLostSnackbar.getView();
TextView textView = snackbarView.findViewById(android.support.design.R.id.snackbar_text);
textView.setLineSpacing(0, SNACKBAR_LINE_SPACING_MULTIPLIER);
snackbarView.getViewTreeObserver().addOnPreDrawListener(new NotDismissiblePreDrawListener(snackbarView));
mConnectionLostSnackbar.show();
如果有任何关于在键盘启动时不展开小吃栏的想法,我将不胜感激。提前致谢。
我也遇到了同样的情况,但是找不到问题的原因。
为了避免扩展快餐栏,我决定把它放在键盘后面。这是通过将此行添加到清单
上所需的 activity 来实现的
android:windowSoftInputMode="adjustNothing"
我真的很想知道为什么会这样,因为在这个项目中我经常使用 snackbar 而它只有一个中断 activity
我注意到只有当 Snackbar 附加到 CoordinatorLayout 时才会发生这种情况,而 CoordinatorLayout 在层次结构的某处有另一个 CoordinatorLayout 父级。我猜 的行为因为多个 CoordinatorLayouts 而重复,并且 Snackbar 最终占据了整个屏幕。
解决方案是将 Snackbar 附加到最顶层的 CoordinatorLayout。在我的场景中,我有一个带有 CoordinatorLayout 内容视图的 Activity,它托管一个以 CoordinatorLayout 作为根视图的片段。当片段需要显示 Snackbar 时,它会将其附加到 Activity 的 CoordinatorLayout,然后在显示键盘时它会正确运行。请注意,我现在使用的是 AndroidX 库而不是支持库,因此行为可能略有不同。
只需将此 属性 放入您的 Manifest
文件到您正确的 activity。
<activity android:name=".YourActivity"
android:windowSoftInputMode="adjustResize"/>
我发现了一个问题,当软键盘启动时,快餐栏会自行扩展以适应屏幕上列表视图的大小。
Snackbar 有问题
普通小吃店(键盘未启动)
我已经能够通过以编程方式设置高度来稍微解决这个问题,但是文本从小吃栏中消失了,我不知道如何将它添加回去。
ViewGroup.LayoutParams lp = snackbarView.getLayoutParams();
lp.height = 150;
snackbarView.setLayoutParams(lp);
添加小吃店如下:
mConnectionLostSnackbar = Snackbar.make(view, mConnectionLostString, Snackbar.LENGTH_INDEFINITE);
final View snackbarView = mConnectionLostSnackbar.getView();
TextView textView = snackbarView.findViewById(android.support.design.R.id.snackbar_text);
textView.setLineSpacing(0, SNACKBAR_LINE_SPACING_MULTIPLIER);
snackbarView.getViewTreeObserver().addOnPreDrawListener(new NotDismissiblePreDrawListener(snackbarView));
mConnectionLostSnackbar.show();
如果有任何关于在键盘启动时不展开小吃栏的想法,我将不胜感激。提前致谢。
我也遇到了同样的情况,但是找不到问题的原因。
为了避免扩展快餐栏,我决定把它放在键盘后面。这是通过将此行添加到清单
上所需的 activity 来实现的android:windowSoftInputMode="adjustNothing"
我真的很想知道为什么会这样,因为在这个项目中我经常使用 snackbar 而它只有一个中断 activity
我注意到只有当 Snackbar 附加到 CoordinatorLayout 时才会发生这种情况,而 CoordinatorLayout 在层次结构的某处有另一个 CoordinatorLayout 父级。我猜
解决方案是将 Snackbar 附加到最顶层的 CoordinatorLayout。在我的场景中,我有一个带有 CoordinatorLayout 内容视图的 Activity,它托管一个以 CoordinatorLayout 作为根视图的片段。当片段需要显示 Snackbar 时,它会将其附加到 Activity 的 CoordinatorLayout,然后在显示键盘时它会正确运行。请注意,我现在使用的是 AndroidX 库而不是支持库,因此行为可能略有不同。
只需将此 属性 放入您的 Manifest
文件到您正确的 activity。
<activity android:name=".YourActivity"
android:windowSoftInputMode="adjustResize"/>