在 android 中单击除操作按钮以外的按钮时关闭快餐栏

closing a snackbar on clicking a button other than action button of it in android

我使用代码显示一个小吃店

Snackbar.make(rootView, mMessage, Snackbar.LENGTH_LONG)
                .make(rootView, mMessage, Snackbar.LENGTH_INDEFINITE)
                .setAction("Action", null)
                .show();

此小吃店一直显示在屏幕上

我想做什么:

您可以通过保留对该小吃店实例的引用来做到这一点:

val snackbar = Snackbar.make(rootView, mMessage, Snackbar.LENGTH_LONG)
                .make(rootView, mMessage, Snackbar.LENGTH_INDEFINITE)
                .setAction("Action", null)
                .show();

现在,只要您想关闭它,只需调用 .dismiss(),所以在您的情况下:

theOtherButton.setOnClickListener { snackbar.dismiss() }
mySnackbar = Snackbar.make(rootView, mMessage, Snackbar.LENGTH_LONG)
                .make(rootView, mMessage, Snackbar.LENGTH_INDEFINITE)
                .setAction("Action", null);
mySnackbar.show();

之后就可以了(在其他视图中onClickListener):

mySnackbar.dismiss();

只需使用 yourSnackbar.dismiss();

You can surround with InkWell as:

SnackBar(
  content: InkWell(
    onTap: () {ScaffoldMessenger.of(context).hideCurrentSnackBar();},