首页
编程随笔
Java笔记
Html/Css/Js
Android
后端笔记
服务器搭建
BUG收集
Java异常
Android异常
在线工具
Json格式化
编码/解码
Epub在线编辑
登录
发布文章
个人文章
退出登录
首页
技术教程
BUG收集
在线工具
资源下载
登录
发布文章
退出登录
搜索
当前位置:
首页
-
博客
- 正文
关闭
滑动头部隐藏显示,ViewPager+Tablayout的联动效果
更新时间:2022-09-25 09:47:32
阅读数:1026
发布者:落幕
## 滑动头部隐藏显示,ViewPager+Tablayout的联动效果 ### (1)实现头部导航上滑隐藏,导航悬浮,下滑头部显示 android5.0新特性,需要用到: ```xml android.support.design.widget.CoordinatorLayout android.support.design.widget.AppBarLayout ``` 使用CoordinatorLayout需要在Gradle加入Support Design Library: ```xml compile 'com.android.support:design:22.2.1' ``` 需要隐藏的布局中设置属性: ```xml app:layout_scrollFlags="scroll|enterAlways" ``` 需要滑动的view中设置属性: ```xml app:layout_behavior="@string/appbar_scrolling_view_behavior" ``` 注: Scroll 表示向下滚动时,这个View会被滚出屏幕范围直到隐藏.enterAlways 表示向上滚动时,这个View会随着滚动手势出现,直到恢复原来的位置. 在可以滚动的View上设置属性 app:layout_behavior.该属性的值实际上是一个完整的class名字,而上面例子中的 @string/appbar_scrolling_view_behavior 是 Android Support Library 定义后的值,可以被直接使用. 这个Behavior的class是真正控制滚动时候View的滚动行为.我们也可以继承Behavior这个class去实现特有的滚动行为. 1)xml文件完整代码 ```xml
``` ### 2)activity部分代码 ```java mViewPager=mRootView.findViewById(R.id.actRecordVp); mTabLayout=mRootView.findViewById(R.id.actTabLayout); List
baseContentPagerList=new ArrayList<>(); baseContentPagerList.add(new RecordContentPager(mActivity)); baseContentPagerList.add(new RecordContentPager(mActivity)); baseContentPagerList.add(new RecordContentPager(mActivity)); baseContentPagerList.add(new RecordContentPager(mActivity)); RecordPagerVPAdapter recordPagerVPAdapter=new RecordPagerVPAdapter(mActivity,baseContentPagerList); // 给ViewPager设置适配器 mViewPager.setAdapter(recordPagerVPAdapter); // TabLayout 指示器 (记得自己手动创建4个Fragment,注意是 app包下的Fragment 还是 V4包下的 Fragment) mTabLayout.addTab(mTabLayout.newTab()); mTabLayout.addTab(mTabLayout.newTab()); mTabLayout.addTab(mTabLayout.newTab()); mTabLayout.addTab(mTabLayout.newTab()); // 使用 TabLayout 和 ViewPager 相关联 mTabLayout.setupWithViewPager(mViewPager); // TabLayout指示器添加文本 mTabLayout.getTabAt(0).setText("头条"); mTabLayout.getTabAt(1).setText("热点"); mTabLayout.getTabAt(2).setText("娱乐"); mTabLayout.getTabAt(3).setText("体育"); ```