Snackbar和toast以及snackbar的样式自定义

首先说说Toast。可能大家觉得这玩意儿没什么好说的。就是简单的show一下而已。这里也只是想说一个小技巧,就是有时候你多次点击一个按钮显示toast的时候,他会一直show个不停,这个时候就需要一个小的技巧:

private void showToast() {
        if (toast == null) {
            toast = Toast.makeText(this, "test", Toast.LENGTH_SHORT);
        } else {
            toast.setText(System.currentTimeMillis()+"test");
        }
        toast.show();
    }
说明一下:这里就是判断toast是否为空,为空就makeText,不为空就直接settext()然后show。这里就会避免多次点击后多次show个不停的问题。这样弹出的toast就会只保持一个toast的展示时间。

下面就说说这个Snackbar,snackbar比toast更加灵活,使用起来也和toast一样的简单方便。

Snackbar bar = Snackbar.make(view, "do something", Snackbar.LENGTH_SHORT);
Snackbar.SnackbarLayout barlayout  = (Snackbar.SnackbarLayout) bar.getView();
//更换背景色
barlayout.setBackgroundColor(getResources().getColor(R.color.colorAccent));
//更换字体颜色
((TextView)barlayout.findViewById(R.id.snackbar_text)).setTextColor(getResources().getColor(R.color.colorPrimary));
//设置事件
bar.setAction("todo", new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        showToast("do something");
                    }
                }).show();

这里可能有人觉得需要向toast处理一下连续点击的问题。snackbar连续点击会取消上次的show,就是说连续点击也只是保持一个,旧的会被取消。

个人感觉snackbar这玩意儿还是挺好的。如果设计师觉得这个样式不错,大家就赶紧换掉旧的toast吧。

又一个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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值