CoordinatorLayout 使用综述系列(一)
CoordinatorLayout 使用综述系列(一)
在 gradle 文件中引入 meterial design 库:
compile 'com.android.support:design:22.2.0'
CoordinatorLayout 实现了多种Material Design中提到的滚动效果
1 CoordinatorLayout 与 FloatingActionButton 结合使用
<android.support.design.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.design.widget.FloatingActionButtonandroid:id="@+id/fab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="end|bottom"android:layout_margin="16dp"android:src="@mipmap/ic_launcher" /></android.support.design.widget.CoordinatorLayout>
activity 中
findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Snackbar.make(view, "Hello Snackbar", Snackbar.LENGTH_LONG).show();}
});
2 CoordinatorLayout 与 其他控件(例如 Button) 结合使用
<android.support.design.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/fab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="end|bottom"android:layout_margin="16dp"android:text="click"/></android.support.design.widget.CoordinatorLayout>
弹出的Snackbar会将Button覆盖,也就是CoordinatorLayout 不能正常工作。这是因为 View 没有默认的CoordinatorLayout.Behavior 的实现,
那么我们的解决方案就是自定义一个CoordinatorLayout.Behavior来控制Button的响应
import android.content.Context;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;/*** class infation*/
public class FloatingActionButtonBehavior extends CoordinatorLayout.Behavior<Button> {public FloatingActionButtonBehavior() {}public FloatingActionButtonBehavior(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean layoutDependsOn(CoordinatorLayout parent, Button child, View dependency) {//如果我们想监听改变,就让方法返回 true。在例子中,我们只想监听 Snackbar 对象的改变return dependency instanceof Snackbar.SnackbarLayout;}@Overridepublic boolean onDependentViewChanged(CoordinatorLayout parent, Button child, View dependency) {/*** 当 CoordinatorLayout 中的 view 每次发生变化时,onDependentViewChanged 方法都会被调用。* 在这个方法中,我们要读取当前 Snackbar 的状态。* 当Snackbar 显示的时候,我们想把 Button 也移上来。* 要实现这样的目的,我们需要把 Button 的 Y 坐标设置为Snackbar 的高度。要得到正确的转换值,我们需要从转化的 Y 值中减去 Snackbar 的高度*/float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight());child.setTranslationY(translationY);return true;}
}
然后将写好的 FloatingActionButtonBehavior 设置给我们所要变动的Button
<android.support.design.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/fab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="end|bottom"android:layout_margin="16dp"android:text="click"/></android.support.design.widget.CoordinatorLayout>
所有通过上述的自定义Behavior 我们就可以做到定义任想要改变的控件移动
CoordinatorLayout 使用综述系列(一)相关推荐
- CoordinatorLayout 使用综述系列(二)与AppBarLayout结合上下联动效果
CoordinatorLayout 使用综述系列(二) 在 gradle 文件中引入 meterial design 库: compile 'com.android.support:design:22 ...
- 综述系列 | 多标签学习的新趋势
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 随着Deep learning领域的不断发展,我们面对的问题 ...
- Paper Reading - 综述系列 - Hyper-Parameter Optimization(下)
更多可见计算机视觉-Paper&Code - 知乎 目录 搜索策略 网格搜索 随机搜索 贝叶斯优化 结论 接着上一篇继续说 搜索策略 网格搜索 将每个超参数的搜索空间离散化为笛卡尔积.然后使用 ...
- 搜索推荐中的召回匹配模型综述(二):基于表示学习的深度学习方法
" 本文是搜索推荐中的召回匹配模型综述系列的第二篇,上一篇为搜索推荐中的召回匹配模型综述(一)--传统方法. 本文主要介绍了搜索推荐中基于representation learning的深度 ...
- 指纹识别综述(3): 特征提取
指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...
- 指纹识别综述(1): 导论
指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...
- 指纹识别综述(5): 分类与检索
指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...
- 指纹识别综述(7): 指纹合成
指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...
- 指纹识别综述(8): 唯一性
指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...
最新文章
- 7.1 TensorFlow笔记(基础篇):加载数据之预加载数据与填充数据
- 域名解析可以带端口吗_带互感器的三相电表接线,S2可以不接地吗?ABC相序可以错吗?...
- 编写一个爬虫类库——(一)想法
- oracle两个约束,Oracle中的约束介绍(2)
- android --- fastboot 协议学习
- python symbols函数,Python
- flutter 的像素尺寸
- 边境的悍匪—机器学习实战:第三章 分类
- 通俗易懂奈奎斯特定理和香农定理
- 个人网站搭建,个人网站需要什么软件
- 登录令牌 Token 介绍
- sqlserver java驱动_sqlserver jdbc驱动
- Java基础 课后作业错题集
- 自考英语和计算机可以替代,自考本科学位英语用什么可以替代?
- 2.ipv6苹果上线 新网域名不支持AAAA 域名DNS解析AAAA -----如何将DNS从新网转到DNSPod?
- Loj #2585. 「APIO2018」新家
- SQL Server 数据库设计(ER图)
- 如何使用正规seo技术做网站排名?
- 重磅!《2022中国开源发展蓝皮书》正式发布
- 银行项目外包专题系列之一:经常遇到的外包/驻场/实施/To B/POC这些概念
热门文章
- CV Papers|计算机视觉论文推荐周报20200501期
- 最强开源OCR!印刷体古籍文字识别超越著名商业软件ABBYY
- 注意!Python开发中最容易掉进去的10个坑!你遇到过那些
- 【OpenCV】OpenCV实战从入门到精通之 -- 常用数据结构和函数(Point、Scalar、Size、Rect、cvtColor)
- CVPR 2020 | 中科院、商汤联合提出大规模多标签目标检测新算法
- jsp页面适应手机屏幕_HTML5之页面缩放 viewport
- 动手学pytorch之tensor数据(一)
- 关于numpy mean函数的axis参数
- TensorFlow官方教程翻译:导入数据
- Python 新手入门引导