我发现当软键盘启动时,小吃栏会自动扩展以适应屏幕上列表视图的大小。
我已经能够通过以编程方式设置高度来稍微解决这个问题,然而文本从快餐栏中消失了,我不知道如何将其添加回来。
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();
我很感激任何关于键盘启动时没有小吃栏扩展的想法。提前谢谢。
答案 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"/>