【问题标题】:Setting OnClickListener on SnackBar not setAction()?在 SnackBar 上设置 OnClickListener 不是 setAction()?
【发布时间】:2021-05-10 14:34:00
【问题描述】:

我正在尝试找出如何让小吃店拥有一个 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(),但我希望 snapbar 本身成为我的点击按钮。我知道新的 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() 中编码小吃栏对象而不是作为字段对象引入来解决我的问题。显然我的主要问题与此更改有关。

【问题讨论】:

    标签: java android android-snackbar


    【解决方案1】:

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

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

    event 参数与static constants 进行比较,了解它是如何被解除的。

    【讨论】:

    • 我已经编辑了文本。看看你明白我的意思吗?
    • @Rklearner 我不知道为什么它不起作用,但是我不会那样做,它只是一团糟。
    • @Rklearner 你试过我提出的解决方案了吗?
    • callback() 工作正常,但我需要通过单击它或将其滑动来使其消失。
    • @Rklearner onDismissed 方法在 Snackbar 消失时被调用,这就是为什么我不明白出了什么问题。我的意思是,当你滑动 Snackbar 时会调用 onDismissed
    猜你喜欢
    • 2018-01-26
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多