Android下拉上滑显示与隐藏Toolbar另一种实现
public abstract class RecyclerViewScrollListener extends RecyclerView.OnScrollListener {
private static final int SCROLL_DISTANCE = 50;
private int totalScrollDistance;
private boolean isShow = true;
@Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int firstVisableItem = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
//当第一个item存在界面上时就不触发隐藏、显示操作
if(firstVisableItem==0) {
return;
} if ((dy > 0 && isShow) || (dy < 0 && !isShow)) {
totalScrollDistance += dy;
} if (totalScrollDistance > SCROLL_DISTANCE && isShow) {
hide();
isShow = false;
totalScrollDistance = 0;
} else if (totalScrollDistance < -SCROLL_DISTANCE && !isShow) {
show();
isShow = true;
totalScrollDistance = 0;
} }
public abstract void hide(); public abstract void show();
}
隐藏和显示事件处理
mRecyclerView.addOnScrollListener(new RecyclerViewScrollListener() {
@Override public void hide() {
mToolbar.animate().translationY(-mToolbar.getHeight()).setInterpolator(new AccelerateDecelerateInterpolator());
}
@Override public void show() {
mToolbar.animate().translationY(0).setInterpolator(new AccelerateDecelerateInterpolator());
} });
效果:

xml布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/
android" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" tools:context=".MainActivity">
<android.support.v7.widget.RecyclerView android:id="@+id/
recyclerView" android:layout_width="match_parent"
android:paddingTop="?attr/actionBarSize" android:clipToPadding="false"
android:layout_height="match_parent"/>
<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
android:layout_width="match_parent" android:background="#8803A9F4"
android:layout_height="?actionBarSize" /> </RelativeLayout>
其中上面RecyclerView中有用到一个属性:android:clipToPadding,这个属性用的不多,这里说明一下用法,这个属性意思当就是当我们设置了paddingTop等属性时候,用来设置列表的内容是否可以绘制在padding区域, 默认是true,表示不可以绘制在padding区域,false表示可以在padding区域绘制,如上效果图显示,列表区域本来是全屏的,而我设置了paddingTop为actionbar的高度,所以列表的内容会在actionbar下面,当往上滑动时候由于我设置了android:clipToPadding="false",所以可以绘制在padding区域,下面我如果把它设为true,android:clipToPadding="true",不觉明历,肯定是上面有一块padding的空白区域,来看看效果:
Android下拉上滑显示与隐藏Toolbar另一种实现的更多相关文章
- 在RecyclerView列表滚动的时候显示或者隐藏Toolbar
先看一下效果: 本文将讲解如何实现类似于Google+应用中,当列表滚动的时候,ToolBar(以及悬浮操作按钮)的显示与隐藏(向下滚动隐藏,向上滚动显示),这种效果在Material Design ...
- css控制div显示/隐藏方法及2种方法比较原码 - czf164的专栏 - 博客频道 - CSDN.NET
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- html显示与隐藏元素的几种方式
html显示与隐藏元素的几种方式 1.display none : 无 隐藏元素 block : 显示 转换为块级元素 不占位:当隐藏的时候元素就完全没有了.不能看见和操作该元素. 优点:为其他元 ...
- android 软键盘的显示与隐藏问题的研究
在android中,常常会和输入法的软件键盘交互.在Manifest文件中,系统给activity的一个属性-windowSoftInputMode来控制输入法的显示方式. 该属性提供了Activit ...
- Android 软键盘的显示和隐藏,这样操作就对了
一.前言 如果有需要用到输入的地方,通常会有需要自动弹出或者收起软键盘的需求.开篇明义,本文会讲讲弹出和收起软键盘的一些细节,最终还会从源码进行分析. 想要操作软键盘,需要使用到 InputMetho ...
- Android Visibility控件显示和隐藏
Android控件显示和隐藏 visibility 可见(visible) XML文件:android:visibility="visible" Java代码:view.setVi ...
- Android 动态控制OptionMenu的显示与隐藏
在有些场景下,可能需要动态的显示和隐藏optionmenu,可以这样实现:如果在activity中默认实现了方法: onCreateOptionsMenu(Menu menu) 那么该OptionMe ...
- Android之密码的显示与隐藏
很多应用都是显示与隐藏密码的功能. 之前的项目都没这个功能要求,也没有专门研究这个.最近项目有加这个功能,我这里也刚好整理一下. 我的思路是设置EditText的InputType.代码如下: if ...
- android软键盘的显示和隐藏
显示: InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.toggle ...
随机推荐
- 免费馅饼 Why WA
免费馅饼 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 1576 Solved: 577 Description 都说天上不会掉馅饼,但有一天gameb ...
- 小白科普之JavaScript的JSON
一.对json的理解 json是一种数据格式,不是一种编程语言,json并不从属于javascript. json的语法可以表示以下三种类型的值 1)简单值 ...
- We are 歪果仁带你灰
We are 歪果仁带你灰 我叫赖彦谕 不爱什么诗和远方 只爱饭桌上的一菜一肉一杯酒 真的很希望有一天我可以成为那个对待学习像对待美食一样的人类 让自己沉浸在美食和知识的海洋中无法自拔 我也对未来的软 ...
- [POJ1936]All in All
[POJ1936]All in All 试题描述 You have devised a new encryption technique which encodes a message by inse ...
- MySQL5.5 RPM安装的默认安装路径
MySQL5.5 RPM安装的默认安装路径 2011-06-20 10:34:32| 分类: MySQL|举报|字号 订阅 下载LOFTER客户端 由于一客户要求安装mysql- 5.5 ...
- (转载)【Android】ViewGroup全面分析
转载自:http://www.cnblogs.com/lqminn/archive/2013/01/23/2866543.html 一个Viewgroup基本的继承类格式如下: import andr ...
- 【云计算】ubuntu下docker安装配置指南
Docker Engine安装配置 以下描述仅Docker在Ubuntu Precise 12.04 (LTS).Ubuntu Trusty 14.04 (LTS).Ubuntu Wily 15.10 ...
- 《ASP.NET MVC4 WEB编程》学习笔记------Model模型绑定
本文转载自haiziguo Asp.net mvc中的模型绑定,或许大家经常用,但是具体说他是怎么一回事,可能还是会有些陌生,那么,本文就带你理解模型绑定.为了理解模型绑定,本文会先给出其定义,然后对 ...
- Maximum Gap
Given an unsorted array, find the maximum difference between the successive elements in its sorted f ...
- Linux下提取IP至文件
ifconfig | grep 'inet[^6]' | sed 's/^\s*//g' | cut -d ' ' -f2 > ips.txt 排除127开头的IP: ifconfig | gr ...
