Android——MaterialDesign之四 FloatingActionButton、Snackbar、CoordinaterLayout
FloatingActionButton
悬浮按钮,默认colorAccent来作为按钮的颜色
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/f_button"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
app:elevation="1dp"
android:src="@mipmap/b1"/>
详解:其中的elevation指定按钮一个高度值,越高就投影的范围就越大,投影的效果就越淡。设置点击事件和普通按钮没什么区别。
效果如下

Snackbar
它是一个提示工具,但是它并不是Toast的替代品,不同场合不同应用,为了让用户进行选择,Snackbar在这方面进行了扩展,允许在提示中加入一个可以交互的按钮。比如要删除的时候,如果用户按错了,在Toast中就显示删除提醒信息,想要不删除都不行,这时候我们增加一个Undo按钮,可以取消删除这个操作,还是提示是否删除,如果不想删除就可以点击Undo进行取消操作,为用户提供了一种弥补措施,提高用户操作的容错率,从而提升用户体验。
下面看看它snackbar的用法:就配合上面的FloatingActionButton的点击事件。
FloatingActionButton fl_button = (FloatingActionButton) findViewById(R.id.f_button);
fl_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar.make(v,"是否删除数据",Snackbar.LENGTH_SHORT).setAction("Undo", new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"您取消了删除",Toast.LENGTH_SHORT).show();
}
}).show();
}
});


详解:点击按钮在屏幕的出现snackbar,再次点击UNDO,出现以下提示。
但是细心的同学肯定发现了,点击之后这个悬浮按钮被遮住了,这样用户视觉体验不是很好,有什么办法补救呢?有人就会说了,这还不简单只要把按钮提高一点就行了,没错这样的确做,似乎解决了。但是你不能保证如果布局里面还有其他的控件被这提高的按钮遮住呢。下面我们就来说说CoordinaterLayout解决这个问题。
CoordinaterLayout
这是一个加强版的FrameLayout,也是Design Support库提供的,在普通情况下它和FrameLayout没什么区别,但是事实上,CoordinaterLayout可以监听其所有的子控件的各种事件,然后会自动帮助我们做出最为合理的响应,就像上面留下的问题,弹出的snackbar把FloatingActionButton遮挡住了。
这里的使用也非常的简单,就把原来的FrameLayout替换,所有我说它是加强版的FrameLayout。
<android.support.design.widget.CoordinatorLayout
....
</android.support.design.widget.CoordinatorLayout>
效果如下:

点击后:

看下效果,按钮的确向上移动了,和snackbar完全同步,是不是非常的nice!好了这就是这篇文章的全部内容了。最后提醒一下,以上控件与布局都是Design Support库提供的,需要事先加入包。
Android——MaterialDesign之四 FloatingActionButton、Snackbar、CoordinaterLayout的更多相关文章
- 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建
使用.创造和分享 笔者曾经不思量力的思考过『是什么推动了互联网技术的快速发展?』这种伟大的命题.结论是,除了摩尔定律之外,技术经验的快速积累和广泛分享,也是重要的原因. 有人戏称,『写 Java,首先 ...
- Android单元测试之四:仪器化测试
Android单元测试之四:仪器化测试 仪器化测试 在某些情况下,虽然可以通过模拟的手段来隔离 Android 依赖,但代价很大,这种情况下可以考虑仪器化的单元测试,有助于减少编写和维护模拟代码所需的 ...
- Android——MaterialDesign之三NavigationView
NavigationView的使用 这里我们来讲讲在Android5.0之后推出的NavigationView的具体使用方式.和普通的侧拉菜单制作方式一样,首先所有的东西还是都放在一个DrawerLa ...
- Android——MaterialDesign之二DrawerLayout
滑动菜单--DrawerLayout 滑动菜单就是把一些菜单选项隐藏起来,而不是放置主屏幕中,然后可以通过滑动的方式将菜单显示出来,具有非常的画面效果,就是类似侧边滑动. 例子:需要上一次的Toolb ...
- Android学习之CoordinatorLayout+FloatingActionButton+Snackbar
CoordinatorLayout •简介 CoordinatorLayout 协调布局,可以理解为功能更强大的 FrameLayout 布局: 它在普通情况下作用和 FrameLayout 基本一致 ...
- 【Android - MD】之Snackbar的使用
Snackbar 是 Android 5.0 新特性--Material Design 中的一个控件,用来代替 Toast ,Snackbar与Toast的主要区别是:Snackbar可以滑动退出,也 ...
- Android——MaterialDesign之一Toolbar
Toolbar 由于ActionBar设计原因只能存在活动的顶部,从而不能实现MaterialDesign的效果,现在推荐使用Toolbar,继承Actionbar,但是比起它更加的灵活. 设置主题: ...
- 安卓Android Support Design Library——Snackbar
介绍: Snackbar是Android Support Design Library库支持的一个控件,用于在界面下面提示一些关键信息,跟Toast不同的地方是SnackBar允许用户向右滑动消除它, ...
- Android Design Support Library——Snackbar
Snackbar是一个轻量级控件,它可以很方便的提供消息的提示和动作反馈,类似于Toast.Snackbar包括一段文字信息与一个可选的操作按钮,超时自动隐藏,也可以通过滑动来删除.效果如下所示: S ...
随机推荐
- socket编程解决粘包和丢包问题
##socket 丢包粘包解决方式 采用固定头部长度(一般为4个字节),包头保存的是包体的长度 header+body 包头+包体 下面的例子不是按照上图中规定的格式编写的,但是思路都是一样的,先读出 ...
- python入门学习:6.用户输入和while循环
python入门学习:6.用户输入和while循环 关键点:输入.while循环 6.1 函数input()工作原理6.2 while循环简介6.3 使用while循环处理字典和列表 6.1 函数in ...
- 基于SpringBoot的项目管理后台
代码地址如下:http://www.demodashi.com/demo/13943.html 一.项目简介 在使用本项目之前,需要对SpringBoot,freemaker,layui,flyway ...
- Linux下简单的缓冲区溢出
缓冲区溢出是什么? 科班出身,或者学过汇编的应该知道,当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持 ...
- Spring Security(二十八):9.4 Authentication in a Web Application
Now let’s explore the situation where you are using Spring Security in a web application (without we ...
- springboot打成的jar包如何在Linux上持久运行
一.首先说说在没有springboot的时候,项目是如何部署的? 1.动态web项目 动态web项目部署很方便,基本上上传文件到服务器的tomcat里面的webapps文件夹下即可完成部署.当然了,这 ...
- Python 学习 第十一篇:numpy
numpy是Python中的基础模块,类型ndarray定义了一个具有矢量算术运算的多维数组,无需编写循环,就能对整个数组进行批量运算.通常情况下,导入numpy,设置别名为np. import nu ...
- 2019年DNS服务器速度排行榜
第一名:DNSPod 不得不说腾讯自从收购了DNSPod后,无论是服务还是速度都有显著的提升,无论是访问速度还是解析速度都在国内是处于龙头大哥的地位,昔日的老大114的地位已经不保,作为腾讯旗下的公司 ...
- hdu 4135 a到b的范围中多少数与n互质(容斥)
Co-prime 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4135 input The first line on input contains ...
- jQuery基础语法知识梳理
一.attr() attr()方法设置或返回元素的属性. attr(属性名):获取元素属性名的值. attr(属性名,属性值):设置元素属性名的值. 例子: <a href=”http://12 ...