Snackbar--Toast的替代者

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

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();

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

你可能感兴趣的:(android,控件)