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. w3m 在ubuntu中的使用

    w3m 使用总结 安装 sudo apt install w3m终端 w3m www.baidu.com 即可打开w3m是个开放源代码的命令行下面的网页浏览器.一般的linux系统都会自带这个工具,可 ...

  2. UVA1607-Gates(思维+二分)

    Problem UVA1607-Gates Accept: 111  Submit: 767Time Limit: 3000 mSec Problem Description Input The fi ...

  3. CROI R1

    $CROI$ $R1$ 今天参加了一场比赛,什么比赛呢?CROI. CROI是什么呢? $Challestend$ $Rehtorbegnaro$ $OI$.总的来说就是我们机房的一些神仙出的题啦. ...

  4. 转://通过udev创建ASM共享磁盘(RAC)

    OS:RedHat EL6.0 Oracle:   Oracle 11gR2 在Oracle 11gR2,构建RAC时可以通过ASM创建asm disk,但是需要安装asmlib相关软件:对于RedH ...

  5. pytorch torchvision.ImageFolder的使用

    参考:https://pytorch-cn.readthedocs.io/zh/latest/torchvision/torchvision-datasets/ torchvision.dataset ...

  6. AI LeNet

    LeNet 参考链接: http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf https://www.charleychai.com/blogs/20 ...

  7. MySQL笔记--注意

    replace into 和 insert into..... on duplicate key update的异同 同:1. 当key不存在时,两者相同,都是插入一条数据2. key存在时,执行两者 ...

  8. Generative Adversarial Nets[content]

    0. Introduction 基于纳什平衡,零和游戏,最大最小策略等角度来作为GAN的引言 1. GAN GAN开山之作 图1.1 GAN的判别器和生成器的结构图及loss 2. Condition ...

  9. Python学习总结 10 自动化测试Selenium2

    一, 配置 Selenium2 1 Selenium是什么? Selenium是一个用于Web应用程序测试的工具.Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括I ...

  10. java 基础 动态绑定和多态