来自文档:参数Duration -可以是预定义长度之一:LENGTH_SHORT、LENGTH_LONG、或以毫秒为单位的自定义持续时间。但我无法设置自定义持续时间。
比如说
Snackbar
.make(parentLayout, "Feed cat?", 8000) // try here
.setAction("Yes", snackOnClickListener)
.setActionTextColor(Color.MAGENTA)
.setDuration(8000) // try here
.show();
但小吃店很快就消失了。
8条答案
按热度按时间vmdwslir1#
基于
Snackbar
和SnackbarManager
的实现,我可以证实尤金H的评估:这是一个错误。来自SnackbarManager
:因此,任何不是
LENGTH_LONG
的值都会导致一个持续时间较短的snackbar。我已经把它归档了。
编辑:已在修订版22.2.1中修复。请查看发行说明here
Android文档尚未更新,但如果您跳到源代码,您会注意到方法setDuration(int duration)的参数可以是LENGTH_SHORT、LENGTH_LONG、LENGTH_INDEFINITE中的一个,也可以是以毫秒为单位的自定义持续时间
rvpgvaaj2#
将初始持续时间设置为LENGTH_INDEFINITE,然后设置自定义持续时间:
编辑
现在可以直接以毫秒为单位设置周期;
ohtdti5x3#
从
'com.android.support:design:22.2.1'
开始您可以将小吃条的持续时间设置为
LENGTH_INDEFINITE
,它将使小吃条显示,直到它被解散或另一个小吃条显示。9wbgstp74#
这段代码对我来说非常有效试试这个
nukf8bse5#
它似乎固定在
只有Lint显示红色下划线,但它的工作。
ars1skjm6#
我已经创建了一个解决方案,我做了一个类,使用handler和postDelayed设置snackbars的自定义持续时间:
要像这样使用:
gkn4icbw7#
你好,给予这个外部库https://github.com/nispok/snackbar。它已经过时了,但是它可以很容易地解决你的问题。而且它很容易实现。在支持库之前,我只在小吃店使用这个库。由于支持库的持续时间问题,我很高兴只使用这个库。
zlhcx6iw8#
在2022年,AndroidX仍然可以实现这一解决方案:https://stackoverflow.com/a/44009407/7699617
只需将持续时间(单位:ms)直接设置为
make
函数:另外,我做了一些计算,找出默认持续时间值:
Snackbar.LENGTH_LONG
~ 3000毫秒Snackbar.LENGTH_SHORT
~ 2000毫秒