使用 FLAG_NO_LIMIT 后 SnackBar 落后于 NavigationBar

SnackBar goes behind NavigationBar after using FLAG_NO_LIMIT

我正在尝试像这样专注于设计:

为此,我在 onCreate 中添加了

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

现在布局得到了扩展,但它以某种方式将我的小吃栏隐藏在导航栏后面,这不是预期的结果,因为它应该是 above.Here 我的屏幕截图:

我可能走错了路,如果你能纠正我,那将非常有帮助。

来自 here:为您的小吃店添加边距,48dp 应该足够了。

public static void displaySnackBarWithBottomMargin(Snackbar snackbar, int sideMargin, int marginBottom) {
    final View snackBarView = snackbar.getView();
    final CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) snackBarView.getLayoutParams();

    params.setMargins(params.leftMargin + sideMargin,
                params.topMargin,
                params.rightMargin + sideMargin,
                params.bottomMargin + marginBottom);

    snackBarView.setLayoutParams(params);
    snackbar.show();
}

无需猜测 LayoutParams(它可以让您的 Snackbar 在不同屏幕上处于奇怪的位置)

相反,只需确保布局的根是 CoordinatorLayout。确保协调器也是给小吃店的视图(不要使用 v.getRootView() 因为这可能是另一个视图)

您可能需要为协调器提供一个 id 并将其作为视图传递:

new Snackbar.make(findViewById(R.id.coordinator), ...).show()

不要使用 "rootView" 实例来创建 Snackbar,而是像下面那样使用 getView()

Snackbar snackbar = Snackbar.make(getView(), "Your Message", Snackbar.LENGTH_LONG);
snackbar.show();

我用这个技巧解决了这个问题:

1- 向我的布局添加一个视图

2- 设置 Snackbar setAnchorView

In your XML

<View
        android:id="@+id/snackBarAnchor"
        android:layout_width="0.1dp"
        android:layout_height="0.1dp"
        android:layout_alignParentBottom="true" />

in your code

          snackbar.setAnchorView(R.id.snackBarAnchor)