Snackbar--Toast的替代者

来源:互联网 发布:挪威和丹麦知乎 编辑:程序博客网 时间:2024/05/17 02:39

转载:微信公众号:安卓应用频道

Snackbar是Android Support Library 22.2.0里新增的一个控件,可以理解成一个加强版的Toast或者轻量级的Dialog。默认从底部弹出,会自动消失,也可以手动划出屏幕消失。Snackbar默认是不能交互的,但是可以添加一个点击事件。官方也是推荐用Snackbar来替代Toast的,一起来看看吧!!!

简单入门

Snackbar的写法非常简单,也和Toast非常类似

Snackbar.make(view, "SnackBar", Snackbar.LENGTH_SHORT).show();

Toast是系统级别的,是浮在所有View上的。而Snackbar却是只需要一个View来承载就可以了。

深入学习

添加点击事件,以及其他相关设置,相信代码一看就懂。

 Snackbar.make(findViewById(R.id.btn_snack), "It is Snackbar",                 Snackbar.LENGTH_SHORT)                .setActionTextColor(Color.WHITE)                .setCallback(new Snackbar.Callback() {                    @Override                    public void onDismissed(Snackbar snackbar, int event) {                        super.onDismissed(snackbar, event);                        System.out.println("Snackbar 消失了");                    }                    @Override                    public void onShown(Snackbar snackbar) {                        super.onShown(snackbar);                        System.out.println("Snackbar 出现了");                    }                }).setAction("点我", new View.OnClickListener() {            @Override            public void onClick(View v) {                System.out.println("点击了Snackbar");            }        }).show();

设置背景色或背景图

 Snackbar snackbar = Snackbar.make(findViewById(R.id.btn_snack),                 "Snackbar", Snackbar.LENGTH_SHORT);        View view = snackbar.getView();        view.setBackgroundColor(Color.GREEN);        snackbar.show();

设置位置,动画,icon

Snackbar snackbar = Snackbar.make(v, "It is Snackbar", Snackbar.LENGTH_SHORT);        View snackbarView = snackbar.getView();        //设置显示位置居中        ViewGroup.LayoutParams vl =                snackbarView.getLayoutParams();        CoordinatorLayout.LayoutParams cl = new CoordinatorLayout.LayoutParams(vl.width, vl.height);        cl.gravity = Gravity.CENTER;        snackbarView.setLayoutParams(cl);        //设置字体的颜色        ((TextView)snackbarView.findViewById(R.id.snackbar_text)).setTextColor(Color.RED);        //设置背景颜色        snackbarView.setBackgroundColor(Color.GREEN);        //自定义动画//        snackbarView.setAnimation();        //设置icon        ImageView imageView = new ImageView(this);        imageView.setBackgroundResource(R.mipmap.ic_launcher);        Snackbar.SnackbarLayout ss = (Snackbar.SnackbarLayout) snackbarView;        ss.addView(imageView, 0);        snackbar.setAction("点击", new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this, "Toast", Toast.LENGTH_SHORT).show();            }        });        snackbar.show();

暂时只是学习了如何使用,并没有开始研究源码。而且实际使用中突然发现,位置设定不准确。后续会继续补充。

0 0
原创粉丝点击