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. UVA12188-Inspector's Dilemma(欧拉回路+连通性判断)

    Problem UVA12188-Inspector's Dilemma Time Limit: 3000 mSec Problem Description In a country, there a ...

  2. 解决 双显卡 y7000笔记本 (Dual Graphics) Ubuntu 18.04 GDM3 无法外接显示器

    sudo gedit /lib/systemd/system/gdm3.service 把其中的 ExecStartPre=/usr/share/gdm/generate-config 更改为 Exe ...

  3. P1638 逛画展(直尺法)

    这道题是直尺法的模板题: #include<iostream> using namespace std; ; ; int n, m, a[maxn], vis[M]; int main() ...

  4. P1316 丢瓶盖(二分+贪心)

    思路:都在注解里 #include<iostream> #include<algorithm> using namespace std; ; int a[maxn], n, m ...

  5. 一、Oracle 安装

    一.oracle的安装和链接1.oracle数据库的后台服务: a.Oracle11ghomeTNSListener:数据库服务器的监听程序,负责监听客户端的链接请求 b.OracleServiceO ...

  6. ESP32:mdns协议

    mdns(即多播dns,Multicast DNS)主要实现了在没有传统DNS服务器的情况下使局域网内的主机实现相互发现和通信,使用的端口为5353,遵从dns协议,使用现有的DNS信息结构.语法和资 ...

  7. ssh 免密码登录配置,及其原理

    1.废话不多说,先上图   2. 典型的RSA非对称加密 RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法,于1978年由美国麻省理工学院(MI ...

  8. ajax全局事件

    作用:当你的页面存在很多ajax事件的话,我们有一些信息是公共的,可以复用,我们可以用全局事件进行编写,因为每一个ajax事件调用,都会触发ajax全局事件. jquery的ajax方法的全部全局事件 ...

  9. 面试笔记--Fast-Fail(快速失败)机制

    1.解决: fail-fast机制,是一种错误检测机制.它只能被用来检测错误,因为JDK并不保证fail-fast机制一定会发生.若在多线程环境下使用fail-fast机制的集合,建议使用“java. ...

  10. FineUIPro v4.0.0 发布了,全新 CSS3 动画惊艳登场!

    FineUI(专业版)v4.0.0 即将于 2017-10-23 发布! 这个版本将引入了激动人心的 CSS3 动画,只需要开启全局属性 EnableAnimation 即可,先睹为快: 1. 菜单动 ...