简体   繁体   English

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

[英]Setting OnClickListener on SnackBar not setAction()?

I am trying to find out how can I get snackbar to to have an onClickListener.我试图找出如何让小吃店拥有一个 onClickListener。 here is a simple code:这是一个简单的代码:

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

I know about setAction() but I want snackBar itself be my click button.我知道 setAction() 但我希望snackBar 本身成为我的点击按钮。 I know new androidx support library has changed so many of the solutions I found online are not useful anymore.我知道新的 androidx 支持库已经改变了很多我在网上找到的解决方案不再有用了。

EDIT: Why this piece of code does not work with it?编辑:为什么这段代码不起作用?

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

I Have fixed my problem by coding the snackbar object inside the onClickListner() instead of introduced as a field object.我已经通过在 onClickListner() 中编码小吃栏 object 而不是作为字段 object 引入来解决我的问题。 Apparently my main issue was related to this chnage.显然我的主要问题与这个变化有关。

If by snackbar you mean android.support.design.widget.Snackbar , then you might want to use the addCallback method, to be notified on dismissal.如果您所说的快餐栏是指android.support.design.widget.Snackbar ,那么您可能需要使用addCallback方法,以便在解雇时收到通知。

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

Compare the event parameter with the static constants to understand how it was dismissed.event参数与static 常量进行比较,以了解它是如何被解除的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM