- 开始使用
compile 'com.android.support:design:25.3.1'
- 基本使用
Snackbar.make(view, "Snackbar", Snackbar.LENGTH_SHORT).show();
- 加入Action动作
Snackbar.make(rootLayout,"Snackbar",Snackbar.LENGTH_SHORT).
setAction("点我", new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"test click ",Toast.LENGTH_SHORT).show();
}
}).show();
- 自定义背景颜色
snackbar.getView().setBackgroundColor(Color.RED);
- 自定义提示文字颜色
//方法 1
((TextView) snackbar.getView().findViewById(R.id.snackbar_text)).setTextColor(Color.RED);
//方法2
ViewGroup viewGroup = (ViewGroup) snackbar.getView();
SnackbarContentLayout contentLayout = (SnackbarContentLayout) viewGroup.getChildAt(0);
TextView textView = (TextView) contentLayout.getChildAt(0);
textView.setTextColor(Color.RED);
- 自定义Action文字颜色
snackbar.setActionTextColor(Color.RED));
//ColorStateList api
ColorStateList csl = (ColorStateList)
getResources().getColorStateList(Color.RED);
mSnackBar.setActionTextColor(csl);
//action 默认颜色
默认是<item name="colorAccent">@color/colorAccent</item>
- 定义显示时长duration
LENGTH_LONG 显示2750毫秒
LENGTH_SHORT 显示1500毫秒
LENGTH_INDEFINITE 一直展示,直到它被dismiss掉,或者是下一个Snackbar被显示时。
- 设置回调监听
Snackbar.make(view,"test ",Snackbar.LENGTH_SHORT).setCallback(newSnackbar.Callback() {
@Override
public void onShown(Snackbar snackbar) {
super.onShown(snackbar);
//
}
@Override
public voidonDismissed(Snackbar snackbar,int event) {
super.onDismissed(snackbar, event);
//
/**
*event :
DISMISS_EVENT_SWIPE:滑动Snackbar使其消失
DISMISS_EVENT_ACTION:点击Snackbar上定义的Action
DISMISS_EVENT_TIMEOUT:到了设置的Duration时间后,超时消失
DISMISS_EVENT_MANUAL:调用了dismiss()使其消失
DISMISS_EVENT_CONSECUTIVE:有下一个Snackbar需要显示
*/
}
}).show();
- 显示规则
1.如果在布局中有CoordinatorLayout,那View就是CoordinatorLayout
2.如果没有CoordinatorLayout,我们就先找到一个id为android.R.id.content的FrameLayout(这个布局是最底层的根布局),将View设置为该FrameLayout;
3.遍历视图树直到找到一个合适的容器作为载体
参考文档
没时间解释了,快使用Snackbar!——Android Snackbar花式使用指南 http://www.jianshu.com/p/cd1e80e64311
Android Design Support Library系列之五:Snackbar的使用 http://www.jianshu.com/p/43421c9b7289