如何在召唤行动后保持小吃店保持开放状态

时间:2016-05-14 18:47:08

标签: android dismiss snackbar

我使用小吃栏通知我的应用用户他们没有连接到互联网。 我添加了一个"重试"对小吃店的行动,重新检查连接。 我希望小吃店保持显示,直到我自己解除它(当找到互联网连接时),但我不能让它工作。每当我点击动作时,小吃店就会解散。

我已将持续时间设定为无限期,并且小吃店确实无限期保持开放状态,但当我点击该动作时它会消失。

我在网上看到点击动作后自动关闭小吃吧并不是默认行为。

修改

我觉得我的问题可能很糟糕。 我有一个带有动作的小吃吧,但我不想让小吃棒在动作执行时关闭,它会自动执行动作。

3 个答案:

答案 0 :(得分:1)

您可以覆盖按钮的OnClickListener集。 首先制作小吃吧并使用一些虚拟听众设置动作

Snackbar snackbar = Snackbar.make(view,"TXT",Snackbar.LENGTH_LONG).setAction("OK", new View.OnClickListener() {
        @Override
        public void onClick(View v) { }
    });

然后找到按钮并设置列表器

snackbar.show();
ViewGroup group = (ViewGroup) snackbar.getView();
for(int i=0; i< group.getChildCount();i++){
        View v = group.getChildAt(i);
        if(v instanceof Button){
            v.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    YOUR_ACTION();
                }
            });
        }
 }

答案 1 :(得分:0)

您可以尝试

final Snackbar snackbar = Snackbar.make("your view".getRootView(), "Annotations", Snackbar.LENGTH_INDEFINITE);
    snackbar.setAction("your action", new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // do something
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    snackbar.show();
                }
            }, 1);
        }
    });
    snackbar.show();

单击操作后,小吃店将自动关闭,但会有所延迟,因此,如果直接在snackbar.show();中调用OnClickListener,小吃店将不会显示。因此,要使其始终显示,请在显示之前稍加延迟。 (令人惊讶的是,一毫秒的延迟就足够了)

答案 2 :(得分:0)

您可以执行以下操作:

snack = Snackbar.make(binding.root, "Your text", Snackbar.LENGTH_INDEFINITE)
            .setAction("Button Text") {
                // do something here 
                it.postDelayed({
                    snack.show()
                }, 1000) // Snackbar reappears after 1 second
            }