安卓高级6 SnackBar( 二 )


Snackbar.make(mCoor, "普通的SnackBar", Snackbar.LENGTH_SHORT).show();
还有一种要求传入一个ID,注意这个ID并不是指其他的什么,就是你在.xml文件中定义的字符串资源的ID,比如这样:
Snackbar.make(mCoor, R.string.normal, Snackbar.LENGTH_SHORT).show();
然后第三个参数是的持续时间,只有三种:
1、Snackbar.LENGTH_INDEFINITE 一直显示直到另一个SnackBar出现或者主动调用了dismiss()方法2、Snackbar.LENGTH_SHORT 显示较短的时间3、Snackbar.LENGTH_LONG 显示较长的时间
但是官方文档是这么描述的:
either be one of the predefined lengths: LENGTH_SHORT, LENGTH_LONG, or a custom duration in milliseconds.
说是可以自定义显示时间,但是我自己试了确实不可以,应该是API文档的一个小bug,如果谁试成功了赶紧告诉我~~如果使用过Toast的话上面的应该很好理解,好了,如果你的业务中对并没有更多的要求,那么最普通的应该满足了,接下来看稍微高级一点的:
1、mSnackBar.setActionTextColor(Color.rgb(232,44,123))2、mSnackBar.setActionTextColor(Color.BLUE)3、mSnackBar.setActionTextColor(Color.parseColor("#FFDAB9"));
对了,我还发现一种额外的方式,我们现在使用 创建新的时候系统都会默认在style.xml文件夹下面生成这个:

这里的@color/其实也可以更改文字颜色,而且默认的文字颜色就是这里设置的颜色,但是有一个缺点就是如果你改动了这里,那么很多 控件的相关颜色都会改变,如果你看过我之前写的--的使用你会知道下划线的颜色也是通过这个属性来更改的,所以为了稳定起见还是使用官方提供的方法去更改吧,我这纯属抖个机灵 。
那么回到正题,讲讲的回调,眼尖的朋友可能发现了,我的Demo里面带回调的在弹出和消失的时候都会有Toast通知出现,其实就是使用了自带的
setCallback(Snackbar.Callback callback)
方法,这里需要传入一个.参数,其实这个,这个 是内部的一个抽象类,它内部有两个空实现的方法:
onDismissed(Snackbar snackbar, int event)onShown(Snackbar snackbar)
顾名思义,我们可以可以分别在这两个方法中定义出当消失和产生时我们需要做的事,这两个方法会在消失和产生时被回调,打个比方:
mSnackBar.setCallback(new Snackbar.Callback() { @Override public void onDismissed(Snackbar snackbar, int event) { super.onDismissed(snackbar, event); Toast.makeText(MainActivity.this,"SnackBar Dismiss",Toast.LENGTH_SHORT).show(); } @Override public void onShown(Snackbar snackbar) { super.onShown(snackbar); Toast.makeText(MainActivity.this,"SnackBar Show",Toast.LENGTH_SHORT).show(); } });
这样就实现了在消失和产生时弹出Toast通知的动作,其他具体的逻辑可以自己去实现 。
完全自定义你自己的
如果你对上述使用还是不甚满意,那么接下来我教你怎么自定义你自己的,说实话用到的场景并不多,但是学了就学个透彻,这一部分知识的灵感来自于没时间解释了,快使用!,并没有提供更改背景或者其他样式的方法,但是我们可以通过查看源码来试试可不可以自定义自己样式,我们找到这么一段代码: