CoordinatorLayout + AppBarLayout 实现标题栏置顶

举报
再见孙悟空_ 发表于 2022/01/13 00:34:28 2022/01/13
【摘要】 因为前段时间项目中需要这种效果,之前看过 鸿洋大神写过的一个 360详情界面效果,也下载了源码,做了一些尝试,然而感觉太过于局限了,并不能符合项目需求,后来就自己翻阅了一些资料,了解到了 Design 包 中的 CoordinatorLayout ,AppBarLayout 等新组件。 网上了解到的关于 AppBarLayout 很...


因为前段时间项目中需要这种效果,之前看过 鸿洋大神写过的一个 360详情界面效果,也下载了源码,做了一些尝试,然而感觉太过于局限了,并不能符合项目需求,后来就自己翻阅了一些资料,了解到了 Design 包 中的 CoordinatorLayout ,AppBarLayout 等新组件。

网上了解到的关于 AppBarLayout 很多都是结合 ToolBar 来使用的,但是我一般项目中都是自己去定义 ToolBar 所以,就根据自己的写法去尝试了一下。
下面是效果图布局:



  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent">
  6. <android.support.design.widget.AppBarLayout
  7. android:layout_width="match_parent"
  8. android:layout_height="wrap_content">
  9. <TextView
  10. android:layout_width="match_parent"
  11. android:layout_height="50dp"
  12. android:background="#999999"
  13. android:gravity="center"
  14. android:minHeight="50dp"
  15. android:text="顶部标题"
  16. android:textColor="#fff"
  17. app:layout_scrollFlags="scroll" />
  18. <TextView
  19. android:layout_width="match_parent"
  20. android:layout_height="200dp"
  21. android:background="#666666"
  22. android:gravity="center"
  23. android:minHeight="50dp"
  24. android:text="this is content"
  25. android:textColor="#fff"
  26. android:textSize="18sp"
  27. app:layout_scrollFlags="scroll" />
  28. <LinearLayout
  29. android:layout_width="match_parent"
  30. android:layout_height="44dp"
  31. android:background="#fff"
  32. android:orientation="horizontal">
  33. <TextView
  34. android:id="@+id/tv_title1"
  35. android:layout_width="0dp"
  36. android:layout_height="match_parent"
  37. android:layout_weight="1"
  38. android:gravity="center"
  39. android:text="scrollFragment"
  40. android:textColor="@color/select_option_title"
  41. android:textSize="14sp" />
  42. <TextView
  43. android:id="@+id/tv_title2"
  44. android:layout_width="0dp"
  45. android:layout_height="match_parent"
  46. android:layout_weight="1"
  47. android:gravity="center"
  48. android:text="recyclerFragment"
  49. android:textColor="@color/select_option_title"
  50. android:textSize="14sp" />
  51. </LinearLayout>
  52. </android.support.design.widget.AppBarLayout>
  53. <FrameLayout
  54. android:id="@+id/fl_control"
  55. android:layout_width="match_parent"
  56. android:layout_height="match_parent"
  57. app:layout_behavior="@string/appbar_scrolling_view_behavior" />
  58. </android.support.design.widget.CoordinatorLayout>


需要提醒的是,CoordinatorLayout 中 对于当前滑动效果,目前只支持 v4 包下的 NestedScrollView,以及 v7 包下的 RecyclerView 。

上面布局文件中的 FrameLayout 部分也可以换成 ViewPager ,但是也要注意里面使用的控件 要符合上面所提醒的要求。

另外一点就是,为了能够和 AppBarLayout 进行联动,下面的占位控件 必须要添加的一点属性:

app:layout_behavior="@string/appbar_scrolling_view_behavior"
1
在使用 AppBarLayout 的时候,要注意设置 子控件的 app:layout_scrollFlags 属性,通过上面的布局文件就可以看出来,最后指定的标题栏,是没有设置 layout_scrollFlags 属性的,下面也简单的贴一下 scrollFlags 的属性介绍:

scroll: 所有想滚动出屏幕的view都需要设置这个flag, 没有设置这个flag的view将被固定在屏幕顶部。
enterAlways: 设置这个flag时,向下的滚动都会导致该view变为可见,启用快速“返回模式”。
enterAlwaysCollapsed: 当你的视图已经设置minHeight属性又使用此标志时,你的视图只能已最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度。
exitUntilCollapsed: 滚动退出屏幕,最后折叠在顶端。
snap:在滚动结束后,如果view只是部分可见,它将滑动到最近的边界。比如,如果view的底部只有25%可见,它将滚动离开屏幕,而如果底部有75%可见,它将滚动到完全显示。
这五个属性,大家可以根据自己的想法,或者需求去具体尝试 一下效果。

这个效果现在看起来东西不是很多,基本的上面也有介绍,希望可以给大家带来一些帮助。
(Demo加群,进群找群主要demo)
欢迎各位小伙伴加入我的qq群:开发一群:454430053 开发二群:537532956   这里已经有很多小伙伴在等你了,快来加入我们吧

文章来源: wukong.blog.csdn.net,作者:再见孙悟空_,版权归原作者所有,如需转载,请联系作者。

原文链接:wukong.blog.csdn.net/article/details/106320346

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。