使用FLAG_NO_LIMIT后,SnackBar落后于NavigationBar

时间:2017-11-16 11:53:04

标签: android android-snackbar

我正在努力将设计重点放在这样:

enter image description here

为此,我在onCreate

中添加了内容
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

现在布局得到了扩展,但它以某种方式将我的小吃店隐藏在导航栏后面,这不是理想的结果,因为它应该在上面。这是我的截图:

enter image description here

我可能接近错误的方式,如果你纠正我会非常有帮助。

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

请勿使用“ rootView”实例创建Snackbar,而应使用如下所示的getView()

alertDialog.setMessage(mTextViewResult.setText(String.valueOf(sum));

答案 2 :(得分:0)

我使用这种技术解决了这个问题:

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

2-set Snackbar setAnchorView

<块引用>

在您的 XML 中

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

在你的代码中

          snackbar.setAnchorView(R.id.snackBarAnchor)

答案 3 :(得分:-1)

无需使用LayoutParams进行猜测(这会使您的Snackbar处于不同屏幕上的怪异位置)

相反,只需确保布局的根是CoordinatorLayout。确保协调者也是分配给快餐栏的视图(请勿使用v.getRootView(),因为这可能是另一个视图)

您可能需要给协调员提供一个ID,并将其作为视图传递:

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