码迷,mamicode.com
首页 > 移动开发 > 详细

Android Material design之Snackbars

时间:2016-05-07 08:10:04      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

一、什么是Snackbar

1、谷歌原话:Snackbar通过在屏幕底部显示一条简短的信息并提供一个轻量级操作反馈。Snackbar可以包含一个动作。跟Toast相似的是都可以在屏幕上显示信息提示,不同的是Snackbar可以包含一个动作(点击事件)。
2、屏幕上一次只能显示一个Snackbar,并且Snackbar只能包含0或1个动作,更像是轻量化的对话框。
3、谷歌推荐Snackbar和CoordinatorLayout结合使用,Snackbar能够响应CoordinatorLayout向右滑动的清除事件。

二、Snackbar的使用

布局的代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.xiaohu.app.snackbardemo.MainActivity">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/cl"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|right"
            android:layout_margin="@dimen/activity_horizontal_margin"
            android:src="@drawable/ic_plus" />
    </android.support.design.widget.CoordinatorLayout>
</RelativeLayout>

这里选取CoordinatorLayout作为Snackbar的容器。
生成Snackbar的具体代码如下:

Snackbar.make(cl, "这是一个Snackbar", Snackbar.LENGTH_INDEFINITE)
                        .setActionTextColor(getResources().getColor(R.color.colorAccent))
                        .setAction("确定", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                Toast.makeText(MainActivity.this, "响应了Snackbar的点击事件", Toast.LENGTH_LONG).show();
                            }
                        })
                        .setCallback(new Snackbar.Callback() {
                            @Override
                            public void onDismissed(Snackbar snackbar, int event) {
                                fab.setClickable(true);
                                Toast.makeText(MainActivity.this, "Snackbar--onDismissed", Toast.LENGTH_LONG).show();
                            }

                            @Override
                            public void onShown(Snackbar snackbar) {
                                fab.setClickable(false);
                                Toast.makeText(MainActivity.this, "Snackbar--onShown", Toast.LENGTH_LONG).show();
                            }
                        })
                        .show();

Snackbar的生成方式与Toast类似,通过make静态方法来生成,该方法包含三个参数:
第一个参数:设置Snackbar的容器,即Snackbar在哪个View上显示;
第二个参数:设置显示的消息内容;
第三个参数:设置显示的时长,包含LENGTH_INDEFINITE(不会主动消失), LENGTH_SHORT, LENGTH_LONG。
setActionTextColor:设置动作文字的颜色;
setAction:设置动作,包含两个参数:一个是动作名称,一个是View.OnClickListener;
setCallback:设置Snackbar的回调,包含Snackbar显示时的回调和Snackbar消失时的回调;
show:显示Snackbar;
其它方法这里不再叙述了。
对Snackbar而言,除了make方法和show方法是必须的,其它的都是可选的;

以下是真机运行效果,注意观察FloatingActionButton的位置。

技术分享

点击FloatingActionButton时,Snackbar从底部弹出并且FloatingActionButton自动往上移动了,不会造成按键遮挡,提供了很好的交互,这是Snackbar和CoordinatorLayout结合使用的优点之一。

技术分享

Snackbar和CoordinatorLayout结合使用的优点之二:Snackbar可以向右滑动清除。

技术分享

点击确定按钮或者向右滑动清除Snackbar,此时FloatingActionButton又回到了原来的位置

技术分享

Snackbar的使用就介绍到这里了,Snackbar确实让人眼前一亮。

以下是本文的AndroidStudio源码:SnackbarDemo

Android Material design之Snackbars

标签:

原文地址:http://blog.csdn.net/luoxiaohu528/article/details/51332492

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!