Skip to content

MaterialCoordinatorLayout + Fragment+viewpager 滑动折叠image,toolbar

Notifications You must be signed in to change notification settings

i91h1r/MaterialCoordinatorLayout

Repository files navigation

#MaterialCoordinatorLayout + Fragment+viewpager 滑动折叠image,toolbar



TypeScript Open Source Love

一 介绍:

Material Design + Fragment +Viewpager 上滑 头部image 隐藏,Toolbar 固定在顶部位置 5.0 系统以上实现图片状态栏沉浸式

#####截图: image

二 用法:

  1. 使用CoordinatorLayout 作为跟布局
    android:fitsSystemWindows="true"
    视情况设置,会导致状态栏和内容重叠
  2. 要使用toolbar折叠或者包含一个图片实现折叠效果 使用AppBarLayout 布局包含CollapsingToolbarLayout
  3. CollapsingToolbarLayout作用是提供了一个可以折叠的Toolbar,它继承至FrameLayout ,给它设置layout_scrollFlags,它可以控制包含在CollapsingToolbarLayout中的控件(如:ImageView、Toolbar)在响应layout_behavior事件时作出相应的scrollFlags滚动事件(移除屏幕或固定在屏幕顶端)。
    layout_scrollFlags属性值:
    • scroll - 想滚动就必须设置这个。
    • exitUntilCollapsed - 向上滚动时收缩View,但可以固定Toolbar一直在上面
    • enterAlways - 实现quick return效果, 当向下移动时,立即显示View(比如Toolbar)。
    • enterAlwaysCollapsed - 当你的View已经设置minHeight属性又使用此标志时,你的View只能以最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度。
    • contentScrim - 设置当完全CollapsingToolbarLayout折叠(收缩)后的背景颜色。
    • expandedTitleMarginStart - 设置扩张时候(还没有收缩时)title向左填充的距离。 #####ImageView属性 layout_collapseMode (折叠模式) - 有两个值::
    • pin - 设置为这个模式时,当CollapsingToolbarLayout完全收缩后,Toolbar还可以保留在屏幕上。
    • parallax - 设置为这个模式时,在内容滚动时,CollapsingToolbarLayout中的View(比如ImageView)也可以同时滚动,实现视差滚动效果,通常和layout_collapseParallaxMultiplier(设置视差因子)搭配使用。
    • layout_collapseParallaxMultiplier(视差因子) - 设置视差滚动因子,值为:0~1。 值越大视差越大 #####在Toolbar控件中:layout_collapseMode(折叠模式):为pin。 折叠之后 toolbar保留在头部 #####CollapsingToolbarLayout 中两个属性 setStatusBarScrim setContentScrim
    • setStatusBarScrim 折叠之后设置状态栏为图片背景色
    • setContentScrim 折叠之后设置保留位置的背景色(可在xml内设置 也可以代码设置)


4. 给可滑动的组件,NestedScrollView 或者Viewpager设置

app:layout_behavior="@string/appbar_scrolling_view_behavior"
这里注意:
当可滑动组件是viewpager +Fragment 时候,在Fragmetn内一定要用RecycleView作为滑动组件 不可用listview 不然会造成和图片伸缩滑动造成冲突,导致listview 滑动图片伸缩现象出现
当你要设置的滑动组件只是recycleview时候可用NestedScrollView包裹

三 总结:

要有滑动伸缩效果 需要三点:

  1. CoordinatorLayout 作为父容器
  2. 给需要滑动的组件设置
    app:layout_scrollFlags=”scroll|enterAlways” 
    属性
  3. 给可滑动属性设置
    app:layout_behavior="@string/appbar_scrolling_view_behavior"属性

四 常见问题:

  • Caused by: java.lang.IllegalStateException: This app has been built with an incorrect configuration. Please configure your build for VectorDrawableCompat.
    解决
android {
   		defaultConfig {
   			vectorDrawables.useSupportLibrary = true
  		 }


或是因为不是使用的2.0.0 以上的gradle 在项目的build.gradle更改gradle为2.0.0 以上,然后再gradle-wrapper.properties 中设置

distributionUrl=https://services.gradle.org/distributions/gradle-x.xx-all.zip

####Development by
Developer / Author: hyr0318

About

MaterialCoordinatorLayout + Fragment+viewpager 滑动折叠image,toolbar

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages