在 SnackBar 上设置 OnClickListener 不是 setAction()?

问题描述

我想知道如何让小吃店拥有 onClickListener。这是一个简单的代码

button.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            snackbar.make(v,"This is a snackBar",Snackbar.LENGTH_LONG)
                    .setTextColor(Color.BLUE)
                    .show();
        }
    });

我知道 setAction() 但我希望小吃栏本身成为我的点击按钮。我知道新的 androidx 支持库已经改变了很多我在网上找到的解决方案都不再有用了。

编辑:为什么这段代码不适用于它?

View view = snackbar.getView();
    TextView text = view.findViewById(com.google.android.material.R.id.snackbar_text);
    text.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          
        }
    });

我通过在 onClickListner() 内编码小吃店对象而不是作为字段对象引入来解决我的问题。显然,我的主要问题与此更改有关。

解决方法

如果您说小吃店是指 android.support.design.widget.Snackbar,那么您可能需要使用 addCallback 方法,以便在解雇时收到通知。

snackbar.addCallback(new Snackbar.Callback() {
  @Override
  public void onDismissed(final Snackbar snackbar,final int event) {
    ...
  }
});

event 参数与 static constants 进行比较以了解它是如何被取消的。