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