Snackbar使用详解






Snackbar是介于Toast与Dialog之间的一个控件,既可以像Toast一样自动消失,也可以像Dialog一样交互消失。


使用与Toast相似:


Snackbar.make(view, "已加入行程", Snackbar.LENGTH_SHORT).show();


第一个参数是view,任意都行,但是google官方建议传入CoordinatorLayout,一来在Snackbar显示的时候可以右滑移除,二来在Snackbar显示的时候布局会自动变


第二个参数是message,即提示的内容


第三个参数是显示的时长,Snackbar.LENGTH_SHORT 短时间显示且自动消失,Snackbar.LENGTH_LONG 长时间显示且自动消失,Snackbar.LENGTH_INDEFINITE 不消失显示 用在加了Action的情况下,在用户点击之后再消失。


高级一点的使用(改颜色,加Action,加回调):


final Snackbar mSnackbar = Snackbar.make(view, "已加入行程", Snackbar.LENGTH_INDEFINITE);
                //设置Snackbar的背景颜色
                mSnackbar.getView().setBackgroundColor(ContextCompat.getColor(MainActivity.this,R.color.colorPrimary));
                //设置Action文字的背景颜色
                mSnackbar.setActionTextColor(Color.WHITE);
                //设置Action并监听事件
                mSnackbar.setAction("知道了", new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        //to do something
                    }
                })
                        .show();
                //添加回调
                mSnackbar.addCallback(new Snackbar.Callback(){
                    @Override
                    public void onDismissed(Snackbar transientBottomBar, int event) {
                        super.onDismissed(transientBottomBar, event);
                        Log.i(TAG, "onDismissed(MainActivity.java:62)--->> " + "onDismissed");
                    }

                    @Override
                    public void onShown(Snackbar sb) {
                        super.onShown(sb);
                        Log.i(TAG, "onShown(MainActivity.java:68)--->> " + "onShown");
                    }
                });

Material Design设计规范:按钮最多一个,且提示文字是短文本


Github:https://github.com/yechaoa/MaterialDesign


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
又一个snackbar控件,但效果更丰富    集成:compile 'com.nispok:snackbar:2.11. '使用Snackbar.with(getApplicationContext()) // context     .text("Single-line snackbar") // text to display     .show(this); // activity where it is displayed或// Dismisses the Snackbar being shown, if any, and displays the new oneSnackbarManager.show(    Snackbar.with(myActivity)     .text("Single-line snackbar"));添加点击监听:SnackbarManager.show(         Snackbar.with(getApplicationContext()) // context         .text("Item deleted") // text to display         .actionLabel("Undo") // action button label         .actionListener(new ActionClickListener() {            @Override             public void onActionClicked(Snackbar snackbar) {                Log.d(TAG, "Undoing something");             }         }) // action button's ActionClickListener      , this); // activity where it is displayed如果想监听展开、关闭:SnackbarManager.show(     Snackbar.with(getApplicationContext()) // context         .text("This will do something when dismissed") // text to display         .eventListener(new EventListener() {             @Override             public void onShow(Snackbar snackbar) {                 myFloatingActionButton.moveUp(snackbar.getHeight());             }             @Override             public void onShowByReplace(Snackbar snackbar) {                 Log.i(TAG, String.format("Snackbar will show by replace. Width: %d Height: %d Offset: %d",                                         snackbar.getWidth(), snackbar.getHeight(),                                         snackbar.getOffset()));             }             @Override             public void onShown(Snackbar snackbar) {                 Log.i(TAG, String.format("Snackbar shown. Width: %d Height: %d Offset: %d",                         snackbar.getWidth(), snackbar.getHeight(),                         snackbar.getOffset()));             }             @Override             public void onDismiss(Snackbar snackbar) {                 myFloatingActionButton.moveDown(snackbar.getHeight());             }             @Override             public void onDismissByReplace(Snackbar snackbar) {                 Log.i(TAG, String.format(                                 "Snackbar will dismiss by replace. Width: %d Height: %d Offset: %d",                                 snackbar.getWidth(), snackbar.getHeight(),                                 snackbar.getOffset()));             }             @Override             public void onDismissed(Snackbar snackbar) {                 Log.i(TAG, String.format("Snackbar dismissed. Width: %d Height: %d Offset: %d",                                     snackbar.getWidth(), snackbar.getHeight(),                                     snackbar.getOffset()));             }         }) // Snackbar's EventListener     , this); // activity where it is displayed
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yechaoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值