自定义 Android Toast 中的按钮?
Toast 中可以有一个按钮吗?
理论上是的,因为您可以从 XML 布局构建自定义 Toast,但我尝试在其中放置一个按钮,但无法让它注册单击。 有人设法做这样的事情吗?
Is it possible to have a button in a Toast?
In theory, yes because you can build a custom Toast from a layout in XML, but I tried to put a button in it and couldn't get it to register the click.
Did anyone manage to do something like that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
无法点击 toast。无法捕获 toast 消息内的点击。
您需要为此构建一个对话框。有关详细信息,请参阅创建对话框。
Toast 类上的 API 声明 toast 永远不会获得焦点并且因为 Toast 不是视图,所以没有 onClick 消息。我认为因此 Toast 的子级也不能被单击。
A toast can not be clicked. It is not possible to capture a click inside a toast message.
You will need to build a dialog for that. Look at Creating Dialogs for more info.
The API on the Toast class state that a toast will never receive the focus and because a toast is not a view there is no onClick message. I would assume that therefore childs of a Toast can not be clicked as well.
Toast 不能包含按钮。除了 gmail 应用程序和果冻豆中的图库应用程序有一个包含按钮的半吐司之外,谷歌是这样做的
https://gist.github.com/benvd/4090998
我想这回答了你的问题。
A toast cant contain a button. Except that the gmail app and the gallery app in jelly beans have a semi toast that contains a button, here is how Google did it
https://gist.github.com/benvd/4090998
I guess this answers your question.
片段显示了自定义 Toast 的实现:
Toast
类具有类似的接口,Dialog
(具有像Gmail应用程序一样可点击的按钮)millis
中设置长度
Activity
当前限制:
用法:
来源
我在 github 上的原始帖子
显示自定义布局实现的帖子在这篇文章中
Snippet shows implementation of custom Toast that:
Toast
classDialog
(have clickable buttons like Gmail app)length
inmillis
Activity
Current Limitations:
Usage:
Sources
My original post on github
Post that shows implementation of custom layout in this post
传递给 toast 的自定义视图可以包含任何内容;但是,Toast 无法接收任何触摸事件,因此使用触摸事件的任何组件都无法在 Stock Toast 中工作(按钮、单选按钮等)。您唯一的选择是创建一个包含按钮的自定义视图并将其添加到您的布局中。有很多关于如何执行此操作的示例,并且您可以查看一些库以了解其他人是如何执行此操作的。
撤消栏
消息栏
Nurik 的 UndoBar
当然也欢迎您使用我放在一起的 SuperToasts 库,但对于一种用法来说可能有点矫枉过正。我的做法在 SuperActivityToast 类。
A custom view passed to a toast can contain anything; however, toasts cannot receive any touch events so no components that use touch events will work in a stock toast (buttons, radiobuttons, etc.). The only choice you have is to create a custom view with a button in it and add it to your layout. There are many examples of how to do this and a few libraries you can check out to see how other people are doing it.
UndoBar
MessageBar
Nurik's UndoBar
Of course you are also welcome to use the SuperToasts library I put together however it might be a little overkill for one usage. The way that I do it is outlined in the SuperActivityToast class.
您应该使用
Snackbar
。它位于最新的 android 支持库中(在回答时),并且与旧的 api 级别兼容。它比Dialog
或自定义View
更容易实现,并且能够拥有与Toast
不同的按钮。SDK Manager
中的Extras
下载Android 支持库
(修订版 22.2.1 或更高版本)。build.gradle
中将其添加到类依赖项中:com.android.support:design:22.2.0
。实施:
Snackbar.make(this.findViewById(android.R.id.content), "Toast 消息", Snackbar.LENGTH_LONG)
.setAction("单击此处激活操作", onClickListener)
.setActionTextColor(颜色.RED)
.show;
就是这样。没有 github 项目,实现与
Toast
非常相似。我在我的一个项目中使用了它,效果非常好。You should use a
Snackbar
. It is in the latest android support library(at time of answer) and is compatible with older api levels. It is much easier to implement than aDialog
or customView
and has the ability to have a button unlike aToast
.Android Support Library
fromExtras
in theSDK Manager
(revision 22.2.1 or later).build.gradle
add this to the class dependencies:com.android.support:design:22.2.0
.Implement:
Snackbar.make(this.findViewById(android.R.id.content), "Toast Message", Snackbar.LENGTH_LONG)
.setAction("Click here to activate action", onClickListener)
.setActionTextColor(Color.RED)
.show;
And that is it. No github projects and implementation is very similiar to
Toast
. I used it in one of my projects and it works great.在这种情况下,您可以尝试 SuperToast 。它可以用按钮创建吐司。它具有自定义持续时间功能、彩色背景、彩色字体、自定义字体、动画效果。希望你会喜欢它
You can try SuperToast in this case. It can create toast with button. It has custom duration feature, colourful background, colourful fonts, custom fonts, animated effect. Hope u will enjoy it
如果您想添加按钮,请使用警报框:-)。这是一些例子
Android 中的对话框
Use an alertbox, if you want to add a button :-). Here are some examples
Dialog boxes in Android
创建系统覆盖窗口(始终位于顶部)
这是建议可以完成,我还需要吐司中的按钮,所以我仍然需要自己实现。如果我找到更多,我会将其添加到我的帖子中
Creating a system overlay window (always on top)
This is suggesting that it can be done, I also need buttons in a toast so I still have to make my own implementation. If I find more I will add it to my post