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吧。

你可能感兴趣的:(android)