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

时间:2017-10-26 14:37:34

标签: android android-snackbar

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

有问题的小吃 enter image description here

正常小吃栏(键盘未启动) Normal snackbar

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

                ViewGroup.LayoutParams lp = snackbarView.getLayoutParams();
                lp.height = 150;
                snackbarView.setLayoutParams(lp);

enter image description here

小吃店添加如下:

        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();

我很感激任何关于键盘启动时没有小吃栏扩展的想法。提前谢谢。

3 个答案:

答案 0 :(得分:0)

同样的事发生在我身上,但我找不到问题的原因。

为了避免扩大小吃店,我决定把它放在键盘后面。这是通过将此行添加到清单

上的所需活动来实现的
android:windowSoftInputMode="adjustNothing"

我真的很想知道它为什么会发生,因为在这个项目中我经常使用零食吧而且只打破一项活动

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

只需将此属性放入您的Manifest文件中即可进行适当的活动。

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