其实我之前写过一篇文章能解决这种情况,那就是使用CoordinatorLayout,使用CoordinatorLayout能解决这种情况。...但是,我文章里也说过了,CoordinatorLayout有BUG,使用起来卡得像坨屎一样,不管你能不能忍,反正我是不能忍,所以我不会使用CoordinatorLayout。...(2)放弃使用ViewPager 为什么,因为系统的ViewPager做不到,上面有说到能解决冲突是因为NestedScrollingParent和NestedScrollingChild,并且NestedScrollingChild...而图中的父布局和RecyclerView隔着一个ViewPager,也就是说NestedScrollingParent的ChildView是ViewPager,NestedScrollingChild的...但是有的朋友说不嘛,我就要Viewpager,我就要酷酷的滑动动画效果。唉,那你就用最实在的第三中方法吧。
TabLayout implementation'com.google.android.material:material:1.0.0' RecycleView implementation'androidx.recyclerview...:recyclerview:1.0.0' Snackbar implementation'com.google.android.material.snackbar.Snackbar:1.0.0-rc01...' swiperefreshlayout implementation'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0' viewpager implementation...'androidx.viewpager:viewpager:1.0.0' coordinatorlayout implementation'androidx.coordinatorlayout:coordinatorlayout...2 implementation 'androidx.viewpager2:viewpager2:1.0.0' 如果没找的需要的可以到点击进入自己查找需要的。
比如:在CoordinatorLayout中使用AppBarLayout,如果AppBarLayout的子View(如ToolBar、TabLayout)标记了app:layout_scrollFlags...滚动事件,那么在CoordinatorLayout布局里其它标记了app:layout_behavior的子View(LinearLayout、RecyclerView、NestedScrollView...固定的Tab,在TabLayout中居中显示 ? 可滑动的Tab ?...,如果设置了ViewPager,那么ViewPagerAdapter中的getPageTitle()方法返回的就是Tab上的标题 ViewPager设置代码: ViewPager mViewPager...并且给这些组件设置如下属性来告诉CoordinatorLayout,该组件是带有滑动行为的组件,然后CoordinatorLayout在接受到滑动时会通知AppBarLayout 中可滑动的Toolbar
里面嵌套ViewPager和RecyclerView,这种实现方式需要自己解决View滑动事件的冲突,同时还有我在上述提高的在Fragment中存在的问题 使用listView的addHeaderView...关于RecyclerView如何添加headerView可以参考鸿洋大神的这一篇博客 Android 优雅的为RecyclerView添加HeaderView和FooterView 使用SupportLibrary...> 关于CoordinatorLayout的更多用法,可以参考我的这一篇博客使用CoordinatorLayout...题外话 在这篇博客的最后提高的实现轮播图+list列表的几种实现形式,刚开始是不想写的,后面因为ScrollView里面嵌套ViewPager和RecyclerView在fragment中RecyclerView...抢占焦点,在某些情况下用户体验不好,才写出来的,跟这篇博客要讲解的View滑动事件冲突没有多大关系,只是给读者提供多种思路而已 至于CoordinatorLayout,是google IO 2015中提出来的
从效果图,我们可以看到 在 open 状态下,我们向上滑动 ViewPager 里面的 RecyclerView 的 时候,RecyclerView 并不会向上移动(RecyclerView 的滑动事件交给...需要实现的效果为:在页面状态为 open 的时候,向上滑动 Header 的时候,整体向上偏移,ViewPager 里面的 RecyclerView 向上滑动的时候,消费其滑动事件,并整体向上移动。...在上一篇博客 一步步带你读懂 CoordinatorLayout 源码 中,我们有提到在 CoordinatorLayout中,我们可以通过 给子 View 自定义 Behavior 来处理事件。...---- Header 部分的实现 Header 部分实现的两个关键点在于 在页面状态为 open 的时候,ViewPager 里面的 RecyclerView 向上滑动的时候,消费其滑动事件,并整体向上移动...在第一个关键点的实现上,我们是通过自定义 Behavior 来处理 ViewPager 里面 RecyclerView 的移动的,那我们要怎样监听整个 Header 的滑动了。
https://blog.csdn.net/gdutxiaoxu/article/details/52858598 CoordinatorLayout简介 CoordinatorLayout是在...其实相对于前 一个例子,只是把 摆放RecyclerView 的位置替换成ViewPager而已,为了有页面导航器的效果,再使用 TabLayout而已,而TabLayout 在我们滑动的时候最终会停靠在...和TabLayout mViewPager = (ViewPager) findViewById(R.id.viewpager); mTabLayout = (TabLayout...View到达 CollapsingToolbarLayout的底部的时候,这个View 将会被放置,即代替整个CollapsingToolbarLayout) 我们有两种方法可以设置这个常量, 方法一:在代码中使用这个方法...,我们主要讲解了app:layout_collapseMode这个属性,设置不同的值,我们可以让其子View呈现不同的 炫酷效果,如parallax和pin等 CoordinatorLayout的相关用法还有很多
对于这种效果,上面是轮播图的,下面是RecyclerView或者ListView的,一般有一下几种实现方式 - 使用我们上述提高的ScrollView里面嵌套ViewPager和RecyclerView...,这种实现方式需要自己解决View滑动事件的冲突,同时还有我在上述提高的在Fragment中存在的问题 - 使用listView的addHeaderView来实现,或者是通过多种不同的item来实现...关于RecyclerView如何添加headerView可以参考鸿洋大神的这一篇博客 Android 优雅的为RecyclerView添加HeaderView和FooterView - 使用SupportLibrary...> 关于CoordinatorLayout的更多用法,可以参考我的这一篇博客使用CoordinatorLayout...题外话 在这篇博客的最后提高的实现轮播图+list列表的几种实现形式,刚开始是不想写的,后面因为ScrollView里面嵌套ViewPager和RecyclerView在fragment中RecyclerView
本文是介绍 RecyclerView 入门 系列文章 的第二篇。如果您已经对创建 RecyclerView 有了一定的认识,请继续阅读本文。如果尚未熟悉,建议您首先阅读本系列中的 第一篇文章。...RecyclerView 可以很高效地显示列表数据。对于静态的列表数据,默认的 adapter 足矣。然而,在多数情况下,RecyclerView 的数据是动态变化的。...而 ListAdapter 可以处理元素的添加和删除而无需重绘视图,甚至可以为变化添加动画效果。 使用 ListAdapter 的另一个好处是: 当添加或删除元素的时候,还可以添加动画。...Adapter 类中,onBindViewHolder() 现在可以使用 getItem() 从数据列表中获取指定位置的元素了。...仅需几步简单操作就可以在您的 RecyclerView 中使用 ListAdapter。现在您的应用可以通过使用 ListAdapter 来更新那些发生变化的元素以获得更好的性能和用户体验了。
第二种是额外创建一个嵌入 CoordinatorLayout 中的 RecyclerView。...例如,在一个下拉刷新的例子中,这个属性应该放在包含了 RecyclerView 的 SwipeRefreshLayout 中而不是第二层以下的后代中。...在一个使用了内部有 items 列表的 ViewPager 的 fragment 和一个父 activity 之间使用协调时,你想像这里描述的那样在ViewPager 上添加 app:layout_behavior...CoordinatorLayout 的工作方式是通过搜索所有在 XML 中静态地使用 app:layout_behavior 标签或者以编程的方式在 View 类中使用 @DefaultBehavior...第三方滚动和视差效果库 除了使用上述的 CoordinatorLayout,还可以查看这些流行的第三方库来实现 ScrollView, ListView, ViewPager 和RecyclerView
和RecyclerView结合实现下拉刷新,以及RecyclerView的数据适配器RecyclerView.Adapter的用法,还有RecyclerView中item的点击事件的实现方法; 卡片式CardView...需要注意的是,后面两种模式基本只有在CollapsingToolbarLayout才有用, 而前面两种模式基本是需要一起使用的,也就是说,这些flag的使用场景,基本已经固定了。...-- Tabs选项卡,和ViewPager搭配使用可以增大界面的内容展示量,实现各种个性化分类内容展示而不互相干扰!...-- 使用RecyclerView需要在build.gradle中添加 compile 'com.android.support:recyclerview-v7...app:cardPreventCornerOverlap : 在v20和之前的版本中添加内边距, 这个属性是为了防止卡片内容和边角的重叠
出现了许多的控件,这些控件都和CoordinatorLayout配合出各种效果,接下来我们就先简单介绍一下这些控件。...CoordinatorLayout 又名协调者布局,它是support.design包中的控件,所以使用的时候要导入compile 'com.android.support:design:23.3.0’...应该说在MD中,RecyclerView代替了ListView,而NestedScrollView代替了ScrollView,他们两个都可以用来跟ToolBar交互,实现上拉下滑中ToolBar的变化。...在NestedScrollView的名字中其实就可以看出他的作用了,Nested是嵌套的意思,而ToolBar基本需要嵌套使用。...当然,Behavior无法独立完成工作,必须与实际调用的CoordinatorLayout子视图相绑定。具体有三种方式:通过代码绑定、在XML中绑定或者通过注释实现自动绑定。
---- 使用说明 效果图 我们先来看一下新浪微博发现页的效果: ? 接下来我们在来看一下我们两年前仿照新浪微博实现的效果 ? 仿 QQ 浏览器 ? 仿美图商家详情页面的: ? 分析说明: ?...有两种状态,open 和 close 状态。...从效果图,我们可以看到 在 open 状态下,我们向上滑动 ViewPager 里面的 RecyclerView 的 时候,RecyclerView 并不会向上移动(RecyclerView 的滑动事件交给...当 Tab 滑动到顶部的时候,我们向上滑动 ViewPager 里面的 RecyclerView 的时候,RecyclerView 可以正常向上滑动,即此时外部容器没有拦截滑动事件。...使用说明 这里我们已仿 QQ 浏览器 demo 进行说明: 我们一起来看一下怎样使用:简单来说,只需要两步: 第一步,分别在 xml 文件中,为 header 部分, content 部分指定我们对应的
在上一讲中我们讲了NestedScrolling机制,其实android很多有些常用的控件都是支持NestedScrolling机制的,如RecyclerView,NestedScrollView等,...,CoordinatorLayout.Behavior这个相当于NestedScrolling机制的运用和封装。...其实这是CoordinatorLayout父View绑定一个叫goods_list_behavior的子View,有个这个就完成了父View和子View的关联,那么goods_list_behavior..., boolean consumed); 是不是和我们上一讲中的NestedScrollingParent回调方法很像,其实说白了CoordinatorLayout内部还是用NestedScrolling...onStopNestedScroll():看名字就知道了,当停止滑动时调用的方法,主要是执行当滑到一般停止时要怎么恢复还是隐藏商品列表的判断 onNestedFling(): 当手指快速一划时所触发的方法,在代码中结合着
同时Material Design要求应用给用户带入感,让用户在使用时是沉浸在当前的应用当中。...RecyclerView提供的增删动画,那么就需要使用新增的notify方法。...的使用,请参考《 一篇博客理解Recyclerview的使用》 DrawerLayout+NavigationView 使用DrawerLayout实现侧滑: 定义一个布局: <?...attr/colorPrimary是使用了系统的颜色值,当然我们也可以在主题中重写。 注意:Toolbar需要使用Appcompat的一套东西。...最后在布局文件中使用CoordinatorLayout布局,并且给FloatingActionButton添加自定义的Behavior: <android.support.design.widget.CoordinatorLayout
问题现象 首页右滑可进入“个人中心”页面,然后在底部的 RecylerView 上先左右滑动,但是不触发它们父布局 ViewPager 的切换,然后手指不抬起,进行上下滑动,此时 RecylerView...出现问题时,用户的手先触发左右滑动,这时候由于 RecyclerView 父布局 ViewPager 中的一些临界判断没被触发,所以没拦截事件,事件还是到了 RecyclerView 中,此时如果再次上下滑动...开源库的原本代码: image.png 根据分析就是在图中 else 中其实又触发了上下滑动逻辑,而外层的自定义 LinearLayout 布局没有跟随滑动导致的。...以上是个人对于抖音“个人中心”页面滑动冲突优化的拙见及优化方案,仅仅是自己做过简单测试,个人觉得更好的方案可以使用谷歌的嫡系 CoordinatorLayout 来处理这种嵌套滑动。...对文章有何见解,或者有何技术问题,欢迎在评论区一起留言讨论!
效果 主要就是顶部和Tab的悬浮,还有就是被顶掉的那个效果。 听到要实现这样的效果,我抽屉那把砍产品专用菜刀已经蠢蠢欲动了。...属性 ViewPager中使用app:layout_behavior="@string/appbar_scrolling_view_behavior" layout_scrollFlags:AppBarLayout...Java代码中为ViewPager添加几个列表Fragment就能看到以下的效果(注意:列表不可以是ListView,需要用RecyclerView) ?...Tips 问题:使用CoordinatorLayout时,滚动不流畅问题 解决方案:可以写个Behavior添加到AppBarLayout中。...具体的解决方案 问题:如果你在想要刷新功能,在CoordinatorLayout外面套了一个SwipeRefreshLayout,一不小心就触发了刷新~~(自己体会) 解决方案:这个问题可以通过对AppBarLayout
CoordinatorLayout简介 CoordinatorLayout是在 Google IO/15 大会发布的,遵循Material Design风格控件,包含在 support Library...作用View随着被依赖View状态的变化而变化,有点类似于观察模式中的观察者和被观察者。...Toolbar:设置标题,也可以在CollapsingToolbarLayou中app:title="@string/app_name",当CollapsingToolbarLayou设置app:titleEnabled...以下是XML布局代码,注意根布局控件是CoordinatorLayout ,RecyclerView一定要填充数据且充满否则无效果。...> 如果以上简单操作无法满足你的需求,最后附上参考博客文章 Android开发之CoordinatorLayout打造滑动越界弹性放大图片效果 使用CoordinatorLayout打造各种炫酷的效果
:fragment:1.1.0 -> 1.3.6 (*) | +--- androidx.recyclerview:recyclerview:1.1.0 (*) | +-...support 库不能一起使用 ; 在 Android Studio 工程根目录的 gradle.properties 配置文件中 , 添加如下配置 , 可兼容 support 和 androidx 库...:viewpager:1.0.0 (*) | +--- androidx.coordinatorlayout:coordinatorlayout:1.0.0 -> 1.1.0...:viewpager:1.0.0 (*) | +--- androidx.coordinatorlayout:coordinatorlayout:1.0.0 -> 1.1.0...androidx 库中的依赖 ;
ViewPager是android-support-v4.jar包中的一个系统控件,继承自ViewGroup,专门用以实现左右滑动切换View的效果,使用时需要首先在Project->properties...加入这个jar包之后就可以使用ViewPager类了。...isViewFromObject用来实现判断View和Object是否为同一个View。 先看一下效果图: 第一步:首先是在布局文件里添加viewPager布局。...的使用就讲完了, 其实更重要的是想讲:如何解决Android下ViewPager和PagerAdapter中调用notifyDataSetChanged失效的问题 。...具体讲解如下: Google在Android 3.0SDK中推出的ViewPager控件很大程度上满足了开发者开发页面左右移动切换的功能,使用非常方便。
----------抽屉部分结束----------- tab layout 和view pager 实现联动效果: // 初始化ViewPager的适配器,并设置给它...// 给ViewPager添加页面动态监听器(为了让Toolbar中的Title可以变化相应的Tab的标题) viewPager.addOnPageChangeListener(this...); tabLayout.setTabMode(MODE_SCROLLABLE); // 将TabLayout和ViewPager进行关联,让两者联动起来...tabLayout.setupWithViewPager(viewPager); // 设置Tablayout的Tab显示ViewPager的适配器中的getPageTitle函数获取到的标题...-- 使用RecyclerView需要在build.gradle中添加 compile 'com.android.support:recyclerview-v7
领取专属 10元无门槛券
手把手带您无忧上云