吐司上的事件已隐藏

问题描述 投票:0回答:3

我开发了一款游戏,想通过 toast 显示一个对话框:每个句子在不同的 toast 中并一个接一个地显示,但我找不到 toast 的事件,例如隐藏/销毁。 我可以用吐司做这样的东西吗?

android toast
3个回答
4
投票

Toast 消息没有事件,它们内置于实际操作系统中,除了持续时间、位置、布局和内容之外,您无法控制或自定义它们。

如果您一个接一个地触发多个 Toast 消息,它们将被放置在队列中,当第一个消息的持续时间结束时,将显示下一个消息。通过这种方式,您可以实现您想要的目标,但是系统并不是为此而设计的。您应该考虑在视图层次结构中使用一个位于其他视图之上的 View 对象来放置您的句子。这将使您能够更好地控制向用户显示的内容,并为您提供回调。被触摸等。这意味着用户可以按照自己的速度阅读您向他们显示的消息,而不仅仅是您为 Toast 持续时间指定的时间长度。


1
投票
当您调用

Toast.show()

 函数时,Toast 会被加载到队列中,并依次显示。因此,就你而言,你应该能够做类似的事情......

Toast.makeText(context, "message 1" Toast.LENGTH_LONG).show(); Toast.makeText(context, "message 2" Toast.LENGTH_LONG).show(); Toast.makeText(context, "message 3" Toast.LENGTH_LONG).show();

并且后续的每个 Toast 将在前一个 Toast 完成后显示。


0
投票
自 Android 11 以来,这是实现此目的的另一种方法(改编自 reden 的答案

here):

val mvToast = Toast.makeText(applicationContext, "Toastémon", Toast.LENGTH_LONG) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { Log.d("Tag", "Android Red Velvet Cake+") mvToast.addCallback(object : Toast.Callback() { override fun onToastShown() { super.onToastShown() Log.d("Tag", "Wild Toast appeared!") } override fun onToastHidden() { super.onToastHidden() Log.d("Tag", "TOAST fled!") } }) } mvToast.show()
希望对路人有帮助!愿上帝保佑平安!

© www.soinside.com 2019 - 2024. All rights reserved.