在安卓系统中设置Crouton消息的持续时间

6

我已经开始使用Crouton消息而不是Toast消息,因为我可以配置时间持续时间。是否有任何方法可以保持显示Crouton消息直到特定事件而不是指定一定的时间单位?

2个回答

19

你可以在配置中将Crouton的持续时间设置为INFINITE。然后添加一个OnClickListener,在其中调用Crouton.hide(...)来隐藏它,就像这样:

final Crouton crouton = Crouton.makeText(new Activity(), "foo", Style.ALERT)
    .setConfiguration(new Configuration.Builder().setDuration(Configuration.DURATION_INFINITE).build());

crouton.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    Crouton.hide(crouton);
  }
});

crouton.show();

谢谢您的回复,但是我能否在没有点击监听器的情况下调用Crouton.hide(crouton)函数呢?我的意思是说,我能否在if分支中只调用hide函数? - SoulRayder
还有一个问题,crouton变量必须是final吗?或者我们可以使用普通声明的方式来声明。因为目前,如果我尝试使用非final的crouton变量,show和hide方法会出错。 - SoulRayder
1
对于你的第一个问题,你可以以任何想要的方式隐藏Crouton。第二个问题:是的,如果你试图从内部类访问它,它必须是final的。 - Ben Weiss
在 MainActivity 类中声明了 croutons 后,我从一个 AsyncTask 中调用 runOnUiThread 中的 show 和 hide 函数。但是我一直遇到与 croutons 相关的空指针异常。请告诉我该如何纠正这个问题? - SoulRayder
这是一个不同的问题。请在那里提出并包含堆栈跟踪。 - Ben Weiss
显示剩余3条评论

1

无需使用 Crouton 库,您可以简单地添加一个 view 并为其设置 onClickListener。当用户点击它时,view 将从 Layout 中移除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接