Android控件<第十一篇>:Snackbar

Snackbar和Toast、Dialog一样,都可以作为提示存在,但是Snackbar又和它们有所不同。

Snackbar的使用方式和Toast类似

Snackbar.make(view, "这是一个snackbar", Snackbar.LENGTH_SHORT).show();

make方法可以创建Snackbar实例,最后调用show方法显示,效果如下:

131.gif

[设置一个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右侧会显示一个按钮,如图:

图片.png

点击这个按钮,底层代码会调用销毁Snackbar的程序,相当于调用了Snackbar的dismiss方法。

[右滑删除]

当Snackbar在CoordinatorLayout下使用时,支持右滑删除功能,效果如下:

132.gif

[设置显示时长]

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"));
图片.png

[设置Snackbar背景色]

snackbar.getView().setBackgroundColor(Color.parseColor("#00ff00"));

效果如图:

图片.png

[设置padding]

snackbar.getView().setPadding(50, 50, 50 , 50);
图片.png

[在文本前面添加图片]

            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();
图片.png

[本章完...]

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容