我使用小吃栏通知我的应用用户他们没有连接到互联网。 我添加了一个"重试"对小吃店的行动,重新检查连接。 我希望小吃店保持显示,直到我自己解除它(当找到互联网连接时),但我不能让它工作。每当我点击动作时,小吃店就会解散。
我已将持续时间设定为无限期,并且小吃店确实无限期保持开放状态,但当我点击该动作时它会消失。
我在网上看到点击动作后自动关闭小吃吧并不是默认行为。
修改
我觉得我的问题可能很糟糕。 我有一个带有动作的小吃吧,但我不想让小吃棒在动作执行时关闭,它会自动执行动作。
答案 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
}