本文主要是介绍Snackbar样式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识、前端、后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过!
英文原文:Part 3 – Styling Snackbar
欢迎来到design support library 教程的第三部分。目前为止我们已经在这个系列中讨论了浮动操作按钮 (FAB) 以及 Snackbar 。
Snackbar样式
前一篇文章 中我们看到了如何显示Snackbar,但是今天我们将看到如何显示不同颜色的snackbar,向用户传递更多暗示信息,比如snackbar背景显示成红色表明这是一个警告提示。
实际上,我已经在GDG 应用中用Snackbar替代Crouton,但是Crouton可以提供不同的样式,比如STYLE.ALERT,TYLE.INFO。因此我在思考如何显示相同类型的彩色的snackbar,Gabriele Mariotti在Gist上的分享给了我灵感。这里是我刚刚对GDG应用做的Snackbar 改进 。
如何为Snackbar添加背景颜色
你可以通过getView() 方法获取Snackbar的核心视图,然后就可以在对它采用任意颜色了。
比如:
- snackbar.getView().setBackgroundColor(colorId);
下面是ColoredSnackbar类,它封装了一些方法,可以根据用户指定的类型显示不同背景颜色。
- public class ColoredSnackbar {
- private static final int red = 0xfff44336;
- private static final int green = 0xff4caf50;
- private static final int blue = 0xff2195f3;
- private static final int orange = 0xffffc107;
- private static View getSnackBarLayout(Snackbar snackbar) {
- if (snackbar != null) {
- return snackbar.getView();
- }
- return null;
- }
- private static Snackbar colorSnackBar(Snackbar snackbar, int colorId) {
- View snackBarView = getSnackBarLayout(snackbar);
- if (snackBarView != null) {
- snackBarView.setBackgroundColor(colorId);
- }
- return snackbar;
- }
- public static Snackbar info(Snackbar snackbar) {
- return colorSnackBar(snackbar, blue);
- }
- public static Snackbar warning(Snackbar snackbar) {
- return colorSnackBar(snackbar, orange);
- }
- public static Snackbar alert(Snackbar snackbar) {
- return colorSnackBar(snackbar, red);
- }
- public static Snackbar confirm(Snackbar snackbar) {
- return colorSnackBar(snackbar, green);
- }
- }
如何使用?
- Snackbar snackbar = Snackbar.make(getView(), R.string.hello_snackbar, Snackbar.LENGTH_SHORT);
- ColoredSnackBar.alert(snackbar).show();
这里,我使用的是fragment的getView()方法来获得view,不过你也可以使用FrameLayout或者CoordinatorLayout。
这篇关于Snackbar样式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!