当软键盘显示时,Snackbar会扩展

Kar*_*rde 6 android android-snackbar

我发现当软键盘启动时,小吃栏会自动扩展以适应屏幕上列表视图的大小.

Snackbar有问题 在此输入图像描述

普通小吃吧(键盘不起来) 普通的小吃吧

我已经能够通过以编程方式设置高度来稍微解决这个问题,然而文本从快餐栏中消失,我不知道如何将其添加回来.

                ViewGroup.LayoutParams lp = snackbarView.getLayoutParams();
                lp.height = 150;
                snackbarView.setLayoutParams(lp);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

小吃店添加如下:

        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();
Run Code Online (Sandbox Code Playgroud)

我很感激任何关于键盘启动时没有快餐栏扩展的想法.提前致谢.

Ovi*_*diu 3

我注意到,只有当 Snackbar 附加到 CoordinatorLayout 时才会发生这种情况,而该 CoordinatorLayout 在层次结构中的某个位置有另一个 CoordinatorLayout 父级。我猜想由于多个 CoordinatorLayouts,<添加尽可能多的底部填充以在键盘上方显示 Snackbar> 的行为会被重复,并且 Snackbar 最终会占据整个屏幕。

解决方案是将 Snackbar 附加到最顶层的 CoordinatorLayout。在我的场景中,我有一个带有 CoordinatorLayout 内容视图的 Activity,它托管一个以 CoordinatorLayout 作为根视图的片段。当片段需要显示 Snackbar 时,它将其附加到 Activity 的 CoordinatorLayout,然后在显示键盘时它会正确运行。请注意,我现在使用 AndroidX 库而不是支持库,因此行为可能略有不同。