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的更多相关文章

  1. 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建

    使用.创造和分享 笔者曾经不思量力的思考过『是什么推动了互联网技术的快速发展?』这种伟大的命题.结论是,除了摩尔定律之外,技术经验的快速积累和广泛分享,也是重要的原因. 有人戏称,『写 Java,首先 ...

  2. Android单元测试之四:仪器化测试

    Android单元测试之四:仪器化测试 仪器化测试 在某些情况下,虽然可以通过模拟的手段来隔离 Android 依赖,但代价很大,这种情况下可以考虑仪器化的单元测试,有助于减少编写和维护模拟代码所需的 ...

  3. Android——MaterialDesign之三NavigationView

    NavigationView的使用 这里我们来讲讲在Android5.0之后推出的NavigationView的具体使用方式.和普通的侧拉菜单制作方式一样,首先所有的东西还是都放在一个DrawerLa ...

  4. Android——MaterialDesign之二DrawerLayout

    滑动菜单--DrawerLayout 滑动菜单就是把一些菜单选项隐藏起来,而不是放置主屏幕中,然后可以通过滑动的方式将菜单显示出来,具有非常的画面效果,就是类似侧边滑动. 例子:需要上一次的Toolb ...

  5. Android学习之CoordinatorLayout+FloatingActionButton+Snackbar

    CoordinatorLayout •简介 CoordinatorLayout 协调布局,可以理解为功能更强大的 FrameLayout 布局: 它在普通情况下作用和 FrameLayout 基本一致 ...

  6. 【Android - MD】之Snackbar的使用

    Snackbar 是 Android 5.0 新特性--Material Design 中的一个控件,用来代替 Toast ,Snackbar与Toast的主要区别是:Snackbar可以滑动退出,也 ...

  7. Android——MaterialDesign之一Toolbar

    Toolbar 由于ActionBar设计原因只能存在活动的顶部,从而不能实现MaterialDesign的效果,现在推荐使用Toolbar,继承Actionbar,但是比起它更加的灵活. 设置主题: ...

  8. 安卓Android Support Design Library——Snackbar

    介绍: Snackbar是Android Support Design Library库支持的一个控件,用于在界面下面提示一些关键信息,跟Toast不同的地方是SnackBar允许用户向右滑动消除它, ...

  9. Android Design Support Library——Snackbar

    Snackbar是一个轻量级控件,它可以很方便的提供消息的提示和动作反馈,类似于Toast.Snackbar包括一段文字信息与一个可选的操作按钮,超时自动隐藏,也可以通过滑动来删除.效果如下所示: S ...

随机推荐

  1. VMware15安装MAC(MAC OS 10.13)(OS X 10.14)原版可升级最新可解锁macOS Unlocker3.0(OS X 10.13)

      目录树 1.1.2安装环境: 1.1.3所需资源: 1.1.4 Unlocker 3.0解锁 1.1.5 配置环境 1.1.6开始安装 1.1.7开启虚拟机进入MAC安装界面 1.1.8 macO ...

  2. TFT1.44显示屏

    下载这个库 普通arduino的接口 链接 UTFT myGLCD(LPH9135,6,5,2,3,4); mega2560的接口连接 UTFT myGLCD(QD_TFT180A,A2,A1,A5, ...

  3. JS中caller和callee

    caller: caller是函数对象的一个属性,指的是这个函数对象的调用者,如果调用者,如果是顶层调用者,则返回null. 例: function func(){ console.log(func. ...

  4. 【精编重制版】JavaWeb 入门级项目实战 -- 文章发布系统 (第二节)

    说明 本教程是,原文章发布系统教程的精编重制版,会包含每一节的源码,以及修正之前的一些错误.因为之前的教程只做到了评论模块,很多地方还不完美,因此重制版会修复之前的一些谬误和阐述不清的地方,而且,后期 ...

  5. ML.NET 示例:深度学习之集成TensorFlow

    写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...

  6. [C#] LINQ之GroupBy

    声明:本文为www.cnc6.cn原创,转载时请注明出处,谢谢! 本文作者文采欠佳,文字表达等方面不是很好,但实际的代码例子是非常实用的,请作参考. 一.先准备要使用的类: 1.Person类: cl ...

  7. LeetCode 657. Robot Return to Origin

    There is a robot starting at position (0, 0), the origin, on a 2D plane. Given a sequence of its mov ...

  8. sql存储过程中使用 output、nvarchar(max)

    1.sql存储过程中使用 output CREATE PROCEDURE [dbo].[P_Max] @a int, -- 输入 @b int, -- 输入 @Returnc int output - ...

  9. Python 内置库 sys用法

    sys模块功能众多,这边先学习几个常用的方法sys常见函数列表① sys.argv: 实现从程序外部向程序传递参数.其实sys.argv[]就是一个列表,里面的项为用户输入的参数,但是sys.argv ...

  10. rabbitmq集群运维一点总结

    说明:以下操作都以三节点集群为例,机器名标记为机器A.机器B.机器C,如果为双节点忽略机器C,如果为各多节点则与机器C操作相同 一.rabbitmq集群必要条件 1.1.绑定实体ip,即ip a所能查 ...