On Android 支持库 24.1.1,Snackbar 工作正常:
然后开始Android 支持库 24.2.0从那时起,Snackbar 开始表现如下:
在图书馆修订记录 https://developer.android.com/topic/libraries/support-library/rev-archive.html#rev24-2-0,有如下语句:
行为更改:如果状态栏是半透明的,Snackbar 现在会绘制在导航栏后面。
但问题是我的应用程序是全屏的,并且没有导航栏或状态栏。我该如何修复它?
我最近通过从 Snackbar 视图的下边距中减去导航栏高度解决了这个问题。
首先我们需要导航栏的高度。我在此处标记为正确的答案中找到了该代码:如何真正获得Android中的导航栏高度 https://stackoverflow.com/questions/36514167/how-to-really-get-the-navigation-bar-height-in-android
接下来,使用以下代码来调整 Snackbar 下边距:
final Snackbar snackbar = Snackbar.make(findViewById(R.id.fullscreen_content),
message, Snackbar.LENGTH_LONG);
View snackbarView = snackbar.getView();
// Adjust Snackbar height for fullscreen immersive mode
int navbarHeight = getNavigationBarSize(this).y;
CoordinatorLayout.LayoutParams parentParams = (CoordinatorLayout.LayoutParams) snackbarView.getLayoutParams();
parentParams.setMargins(0, 0, 0, 0 - navbarHeight);
snackbarView.setLayoutParams(parentParams);
snackbar.show();
请注意,我使用了 CoordinatorLayout 的 LayoutParams。您应该将 CoordinatorLayout 替换为您传递给您的父布局类型Snackbar.make()
函数(就我而言,R.id.fullscreen_content
是一个 CoordinatorLayout)。使用 CoordinatorLayout 的好处是它允许通过滑动作为标准行为来关闭 Snackbars。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)