Snackbar和Toast、Dialog一样,都可以作为提示存在,但是Snackbar又和它们有所不同。
Snackbar的使用方式和Toast类似
Snackbar.make(view, "这是一个snackbar", Snackbar.LENGTH_SHORT).show();
make方法可以创建Snackbar实例,最后调用show方法显示,效果如下:
[设置一个action]
Snackbar snackbar = Snackbar.make(view, "这是一个snackbar", Snackbar.LENGTH_SHORT);
snackbar.setAction("取消", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
snackbar.show();
Snackbar不支持设置多个action,如果设置多个action,只有最后一个生效。
Snackbar setAction(CharSequence text, final OnClickListener listener)
如果listener不为null,那么在Snackbar右侧会显示一个按钮,如图:
点击这个按钮,底层代码会调用销毁Snackbar的程序,相当于调用了Snackbar的dismiss方法。
[右滑删除]
当Snackbar在CoordinatorLayout
下使用时,支持右滑删除功能,效果如下:
[设置显示时长]
Snackbar make(@NonNull View view, @NonNull CharSequence text, int duration)
duration参数是Snackbar的的显示时长,它可以设置的值有三个
Snackbar.LENGTH_INDEFINITE:不确定时间,只有右滑删除或者点击action按钮才可以删除。
Snackbar.LENGTH_SHORT:时间较短。
Snackbar.LENGTH_LONG:时间较长。
[设置文本]
Snackbar设置文本的方法有两种
- make方法里面设置
Snackbar.make(view, "这是一个snackbar", Snackbar.LENGTH_INDEFINITE);
- 使用setText方法设置
snackbar.setText("这是一个snackbar");
[设置action文本颜色]
snackbar.setActionTextColor(Color.parseColor("#ff00ff"));
[设置Snackbar背景色]
snackbar.getView().setBackgroundColor(Color.parseColor("#00ff00"));
效果如图:
[设置padding]
snackbar.getView().setPadding(50, 50, 50 , 50);
[在文本前面添加图片]
Snackbar snackbar = Snackbar.make(view, "这是一个snackbar", Snackbar.LENGTH_SHORT);
snackbar.setAction("取消", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
TextView textView = snackbar.getView().findViewById(R.id.snackbar_text);
Drawable drawable = getResources().getDrawable(R.mipmap.ic_launcher_round);//图片自己选择
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
textView.setCompoundDrawables(drawable, null, null, null);
//增加文字和图标的距离
textView.setCompoundDrawablePadding(20);
textView.setGravity(Gravity.CENTER);
snackbar.show();
[本章完...]