teh*_*log 51 android snackbar android-design-library
来自文档:参数持续时间 - 可以是预定义长度之一:LENGTH_SHORT,LENGTH_LONG 或自定义持续时间(以毫秒为单位).但我无法设置自定义持续时间.
例如
Snackbar
.make(parentLayout, "Feed cat?", 8000) // try here
.setAction("Yes", snackOnClickListener)
.setActionTextColor(Color.MAGENTA)
.setDuration(8000) // try here
.show();
Run Code Online (Sandbox Code Playgroud)
但不是8秒,Snackbar很快就消失了.
Com*_*are 60
根据实施Snackbar和SnackbarManager,我可以证实尤金H公司的评价:这是一个错误.来自SnackbarManager:
private void scheduleTimeoutLocked(SnackbarRecord r) {
mHandler.removeCallbacksAndMessages(r);
mHandler.sendMessageDelayed(Message.obtain(mHandler, MSG_TIMEOUT, r),
r.duration == Snackbar.LENGTH_LONG
? LONG_DURATION_MS
: SHORT_DURATION_MS);
}
Run Code Online (Sandbox Code Playgroud)
因此,任何不会LENGTH_LONG导致短期快餐栏的价值.
编辑:已在修订版22.2.1中修复.请查看此处的发行说明
Android的文档已不被尚未更新,但如果你跳进源代码,你会发现,该参数的方法setDuration(INT持续时间)可以是LENGTH_SHORT,LENGTH_LONG,一个LENGTH_INDEFINITE或以毫秒为单位的自定义时间
Jim*_*mau 19
将初始持续时间设置为LENGTH_INDEFINITE,然后设置自定义持续时间:
Snackbar
.make(parentLayout, "Feed cat?", Snackbar.LENGTH_INDEFINITE)
.setAction("Yes", snackOnClickListener)
.setActionTextColor(Color.MAGENTA)
.setDuration(8000)
.show();
Run Code Online (Sandbox Code Playgroud)
编辑
直接以毫秒为单位设置句点现在可以正常工作;
Snackbar
.make(parentLayout, "Feed cat?", 8000)
.setAction("Yes", snackOnClickListener)
.setActionTextColor(Color.MAGENTA)
.show();
Run Code Online (Sandbox Code Playgroud)
以来 'com.android.support:design:22.2.1'
你可以设置Snackbar的持续时间,LENGTH_INDEFINITE直到它被解散或显示另一个零食栏为止.
这段代码非常适合我试试这个
Snackbar.make(view, "Hello SnackBar", Snackbar.LENGTH_LONG)
.setAction("Its Roy", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
})
.setDuration(10000)
.setActionTextColor(getResources().getColor(R.color.colorAccent))
.show();
Run Code Online (Sandbox Code Playgroud)
小智 6
似乎是固定的
compile 'com.android.support:design:22.2.1'
Run Code Online (Sandbox Code Playgroud)
只有Lint显示红色下划线,但它有效.
我为此创建了一个解决方案,我创建了一个类,使用handler和postDelayed设置自定义持续时间的零食栏:
public class SnackBarMaker {
public static void snack(View content, String message, String actionText, int actionTextColor, View.OnClickListener onClick){
Snackbar.make(content, message, Snackbar.LENGTH_LONG)
.setAction(actionText, onClick)
.setActionTextColor(actionTextColor)
.show();
}
public static void snackWithCustomTiming(View content, String message, int duration){
final Snackbar snackbar = Snackbar.make(content, message, Snackbar.LENGTH_INDEFINITE);
snackbar.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
snackbar.dismiss();
}
},duration);
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用:
//your duration
int duration = 4000
SnackBarMaker.snackWithCustomTiming(getActivity().findViewById(android.R.id.content)
, getString(R.string.your_message), duration);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29892 次 |
| 最近记录: |