相信经常使用掘金APP的用户来说应该会很熟悉掘金客户端的滑动效果,滑动时适时的隐藏掉Title和底部导航栏,使得更多的内容显示在用户的界面上,从而增加用户的阅读体验。

在本文中将带你使用第三方库来简单的实现掘金的导航栏+悬浮按钮效果

先贴下 ByeBurger库的github地址 :https://github.com/githubwing/ByeBurger

以及实现的最终效果图:

看着还挺不错的样子,进入正题。

1.首先理所当然的是引入编译库

allprojects {repositories {jcenter()maven { url "https://jitpack.io" }}
}dependencies {compile 'com.github.githubwing:ByeBurger:1.2.3'compile 'com.android.support:design:25.0.0'}

2. 在你的页面布局中使用CoordinatorLayout 作为页面布局的根节点,将需要控制隐藏与显示的View作为CoordinatorLayout 的直接子View,并添加 app:layout_behavior属性,布局格式如下:

<android.support.design.widget.CoordinatorLayout><!--这里放置你的Viewpager --><!--你的TitleView--> <TitleViewapp:layout_behavior="@string/bye_burger_title_behavior"  /><!--底部导航栏  --> <BottomViewandroid:layout_gravity="bottom"app:layout_behavior="@string/bye_burger_bottom_behavior" /><!-- floating 悬浮按钮  --><FloatingActionButtonapp:layout_behavior="@string/bye_burger_float_behavior" /></android.support.design.widget.CoordinatorLayout>

这里的布局,你的TitleView可以是一个RelativeLayout,ToolBar,也可以是 TabLayout,BottomView同理。

在以上的效果图中,博主使用的是TabLayout,有小伙伴说Tab中的英文字母会变成大写,但没关系,可以使用以下方式来设置

<style name="MyTabStyle" parent="TextAppearance.Design.Tab"><item name="textAllCaps">false</item></style><style name="MyTabLayoutStyle" parent="Widget.Design.TabLayout"><item name="tabTextAppearance">@style/MyTabStyle</item></style>

然后在 TabLayout 中使用该样式。

3. 控制TitleView和底部导航栏以及悬浮按钮的显示与隐藏

ByeBurgerBehavior.from(mTitleView).hide()ByeBurgerBehavior.show(mBottomView).show()

需要注意的是:

1). 如果TitleView使用的是ToolBar的控件,别忘了将Theme改为NoActionBar

  android:theme="@style/Theme.AppCompat.Light.NoActionBar"

2). 注意布局的层级问题,需要控制显隐的控件,一定是CoordinatorLayout 的 直接子View

基本上到这里就完成使用ByeBurger库所具备的东西,剩下工作就只是实现你的Fragmen逻辑,在本文中由于TabLayout切换碎片的功能跟底部的导航栏类似,所以并未去实现切换逻辑。

最后是该demo的github地址:https://github.com/shanerou/WingAPP

实现掘金导航栏+float按钮其实可以很简单相关推荐

  1. IOS设置导航栏返回按钮,并添加事件返回主页面

    IOS设置导航栏返回按钮,并添加事件返回主页面 前提是已经push了一个viewController了.才能使用. XXXTableViewController 里面书写 - (void)viewDi ...

  2. Swift - 重写导航栏返回按钮

    // 重写导航栏返回按钮方法 func configBackBtn() -> Void { // 返回按钮 let backButton = UIButton(type: .custom) // ...

  3. 去掉 iOS 导航栏返回按钮文本三种方案

    作者 | 街角仰望       责编 | 欧阳姝黎 方案一 自定义 UINavigationController 遵守 UINavigationBarDel 协议 实现下面方法: #pragma ma ...

  4. 钉钉导航栏分享按钮的显示/隐藏

    钉钉导航栏分享按钮的显示/隐藏 隐藏 进行钉钉开发后,打开应用时右上角会有三个小点点"-",打开之后会显示一些分享功能或者查看链接的功能,这样对于应用的安全是存在隐患的,那么如何来 ...

  5. Swift自定义导航栏返回按钮

    如何去除swift系统自带的导航栏返回按钮?可以自定义返回按钮 在swift中,怎么替换系统自带的导航栏返回按钮?比如说我要替换成一张返回按钮图片,点击返回到上一页 首先,看一下系统自带的导航栏返回按 ...

  6. 微信小程序导航栏或菜单栏吸顶效果简单实现

    微信小程序导航栏或菜单栏吸顶效果简单实现 思路: 1.获取导航栏初始位置距顶部的距离s1(通过获取页面标签方法) 2.监听页面的滑动,获取滑动距离s2(使用onPageScroll) 3.当s2> ...

  7. MUI、HTML5+、HBuilder实现透明渐变导航栏+自定义按钮(右上角分享按钮)

    先上效果图: js代码: mui.plusReady(function() {var ws = plus.webview.currentWebview();ws.setStyle({"tit ...

  8. ios开发返回按钮消失_iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决...

    我相信针对每一个iOS开发者来说~除了根视图控制器外~所有的界面通过导航栏push过去的界面都是可以通过右滑来返回上一个界面~其实~在很多应用和APP中~用户已经习惯了这个功能~然而~作为开发者的我们 ...

  9. uni-app 自定义导航栏 图片按钮

    按钮据右边边框距离设置: document.getElementsByClassName('uni-btn-icon')[2].style.marginRight = '22px' 监听按钮状态: o ...

最新文章

  1. latin1_swedish_ci gbk_chinese_ci
  2. elasticsearch 第三篇(安装篇)
  3. Codeforces Round #596 (Div. 2)(第三场)
  4. Hadoop 面试题之Hbase
  5. C++中运算符重载的方法
  6. ThinkPHP框架开发的应用的标准执行流程
  7. 一种数据结构 跳表skiplist
  8. axios把post的RequestPayload格式转为formdata
  9. SQLServer windows身份验证连接字符串
  10. 听说你是程序员的,给我做个网站呗
  11. mysql innodb trx_如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog
  12. setuptools清华源_setuptools与pip的依赖关系解决方案之间的差异
  13. BorderLayout布局管理器设置3个按钮
  14. windows安装多个maven_全网最容易理解的Maven安装、配置、集成演示
  15. 在github上参与开源项目日常流程
  16. Top 10 Security Issue Solution
  17. Django ORM models操作
  18. Centos5.8升级SSH到5.8p2
  19. excel 查一列字符是否在另一列中出现
  20. 节约服务器成本50%以上,独角兽完美日记电商系统容器化改造历程

热门文章

  1. magento的Cannot initialize the indexer process解决方法
  2. 订单管理系统(OMS)、供应链管理系统---多渠道订单汇总,自动化处理
  3. mysql oracle clob_MYSQL 转 ORACLE CLOB类型
  4. 4个小例子告诉你:如何成为一名数据极客
  5. CentOS升级libzip
  6. HP DV2000 内存升级3G成功
  7. th:include的使用
  8. 文件操作函数在VFS层的实现
  9. Java桌面程序开发——如何开发美观漂亮好看的桌面程序
  10. matlab2018单摆动画程序,小车单摆的Matlab动画仿真S函数