SnackBar是一个类似于Toast的东西,它也有显示时长,但是比Toast更加灵活,同时,我们还可以给SnackBar设置点击事件,那么我们今天就来看看怎么用吧!

先来一张效果图:


这种效果大家可能在一些App中已经见过,在没有SnackBar的时候,我们可能需要自定义View来实现这种效果,现在我们只需要简单几行代码就可以实现这种效果了,下来我们看看怎么实现这样的效果。

1.点击后弹出不带action的snackbar

snackbar = Snackbar.make(view, "Snack Bar Text", Snackbar.LENGTH_INDEFINITE);
                snackbar.show();

view是我们点击的那个View,下来的文本就是弹出框显示的文本,最后一个参数表示Snackbar的显示时长,有多种取值,如下:

    /**
     * Show the Snackbar indefinitely. This means that the Snackbar will be displayed from the time
     * that is {@link #show() shown} until either it is dismissed, or another Snackbar is shown.
     *
     * @see #setDuration
     */
    public static final int LENGTH_INDEFINITE = -2;

    /**
     * Show the Snackbar for a short period of time.
     *
     * @see #setDuration
     */
    public static final int LENGTH_SHORT = -1;

    /**
     * Show the Snackbar for a long period of time.
     *
     * @see #setDuration
     */
    public static final int LENGTH_LONG = 0;
这里三种值,分别是长期展示,这种情况下要我们调用dismiss方法来关闭snackbar,或者有其他snackbar显示的时候,它也会自动关闭,第二种和第三种意义和Toast差不多,不赘述。

关闭一个Snackbar,我们只需要调用dismiss方法即可:

snackbar.dismiss();

2.带Action的SnackBar

                Snackbar.make(view, "Snack Bar Text", Snackbar.LENGTH_LONG)
                        .setAction("Go!", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                                startActivity(intent);
                            }
                        })
                        .setActionTextColor(Color.BLUE).show();

也可以给SnackBar设置点击事件,如上,代码很简单,不多说。

Demo下载http://download.csdn.net/detail/u012702547/9351795