首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CoordinatorLayout中滚动Viewpager中的静态视图

CoordinatorLayout是Android Support库中的一个布局容器,用于实现复杂的交互效果和协调子视图之间的行为。它可以用于处理滚动视图和静态视图之间的交互。

滚动ViewPager中的静态视图是指在ViewPager中的页面切换过程中保持固定位置的视图,不随页面滚动而移动的视图。在CoordinatorLayout中实现这样的效果,可以通过以下步骤:

  1. 在布局文件中,将CoordinatorLayout作为根布局,并在其中添加ViewPager和静态视图。
代码语言:txt
复制
<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <TextView
        android:id="@+id/staticView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Static View"
        android:gravity="center"
        android:background="#FF0000"
        android:textColor="#FFFFFF" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>
  1. 在代码中,为ViewPager设置Behavior,以便与CoordinatorLayout进行交互。可以使用AppBarLayout.ScrollingViewBehavior作为ViewPager的Behavior,这样ViewPager就会在滚动时与其他滚动视图进行协调。
代码语言:txt
复制
ViewPager viewPager = findViewById(R.id.viewPager);
CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) viewPager.getLayoutParams();
layoutParams.setBehavior(new AppBarLayout.ScrollingViewBehavior());
  1. 如果需要静态视图保持在顶部或底部,可以使用CoordinatorLayout的属性来设置。
代码语言:txt
复制
<TextView
    android:id="@+id/staticView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top" // 或 "bottom"
    ... />

通过以上步骤,就可以在CoordinatorLayout中实现滚动ViewPager中的静态视图的效果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar-Android M新控件

从官方文档中我们可以看到: CoordinatorLayout是一个增强型的FrameLayout。...- 作为一个为子视图之间相互协调手势效果的一个协调布局 - ) 该控件也是Design包下的一个控件,然而这个控件可以被称为Design包中最复杂、功能最强大的控件:CoordinatorLayout...标记了layout_scrollFlags滚动事件,那么当LinearLayout滚动时便可触发ToolBar中的layout_scrollFlags效果 即往上滑动隐藏ToolBar,下滑出现ToolBar...enterAlwaysCollapsed 当你的视图已经设置minHeight属性又使用此标志时,你的视图只能已最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度 exitUntilCollapsed...,如果设置了ViewPager,那么ViewPagerAdapter中的getPageTitle()方法返回的就是Tab上的标题 ViewPager设置代码: ViewPager mViewPager

2.2K30

CoordinatorLayout使用全解析

AppBarLayout的子布局有5种滚动标识(上面代码CollapsingToolbarLayout中配置的app:layout_scrollFlags属性): scroll:所有想滚动出屏幕的view...exitUntilCollapsed:当你定义了一个minHeight,此布局将在滚动到达这个最小高度的时候折叠。 snap:当一个滚动事件结束,如果视图是部分可见的,那么它将被滚动到收缩或展开。...例如,如果视图只有底部25%显示,它将折叠。相反,如果它的底部75%可见,那么它将完全展开。...Design Library的大多功能都是借助Behavior的大量运用来实现的。当然,Behavior无法独立完成工作,必须与实际调用的CoordinatorLayout子视图相绑定。...ThemeOverlay.AppCompat.Light" /> 然后,我们需要定义AppBarLayout与滚动视图之间的联系

2.2K20
  • 使用CoordinatorLayout打造各种炫酷的效果

    Google IO/15 大会发布的,遵循Material 风格,包含在 support Library中,结合AppbarLayout, CollapsingToolbarLayout等 可 产生各种炫酷的效果...结合ViewPager ? 结合ViewPager的视觉特差 ? ---- AppBarLayout 它是继承与LinearLayout的,默认 的 方向 是Vertical ?...会 跟着 滚动 事件响应, layout_scrollFlags=“snap”的时候 在Scroll滑动事件结束以前 ,如果这个View部分可见,那么这个View会停在最接近当前View的位置。...最顶部,是因为我们没有设置其layout_scrollFlags,即TabLayout是静态的 运行以后,即可看到以下的结果 ?...- 对于AppBarLayout,我们主要 讲解了这个属性app:layout_scrollFlags,设置不同 的属性我们可以在滚动的时候显示不同 的效果 - 对于CollapsingToolbarLayout

    5K10

    【Android】这效果,我没法描述

    思路 先说说实现的思路吧,上面的效果大致可以分成两个部分: 1、Tab向上滚动到顶部时悬浮 Tab滚动后悬浮在顶部嘛~~ 这效果使用CoordinatorLayout + AppBarLayout就能轻松实现...接着监听AppBarLayout的滚动,利用topMargin实现被“顶上去”的效果 拆分完毕,接下来就是实现了 实现 Tab的悬浮效果 利用CoordinatorLayout、AppBarLayout...Java代码中为ViewPager添加几个列表Fragment就能看到以下的效果(注意:列表不可以是ListView,需要用RecyclerView) ?...这时候只要在MainActivity中对AppBarLayout的滚动进行监听即可。...Tips 问题:使用CoordinatorLayout时,滚动不流畅问题 解决方案:可以写个Behavior添加到AppBarLayout中。

    1K50

    NestedScrolling机制之CoordinatorLayout.Behavior实战

    在上一讲中我们讲了NestedScrolling机制,其实android很多有些常用的控件都是支持NestedScrolling机制的,如RecyclerView,NestedScrollView等,...是target或是target的parent * target 处理滑动事件的view * axes 垂直滚动2 横向滚动1 * type 滑动类型touch 0手指按下 1手指松开 */ public...view处于滚动状态,但是并不是由target消耗的滚动时候触发,这个是水平滚动的实时距离 * dyUnconsumed view处于滚动状态,但是并不是由target消耗的滚动时候触发,这个是竖直滚动的实时距离...GoodsListView child, @NonNull View target, float velocityX, float velocityY, boolean consumed); 是不是和我们上一讲中的...,在代码中结合着Scroller,onNestedFling赋一个结束值给Scroller,Scroller会不断产生中间值直到结束为止。

    89910

    Android开发笔记(一百三十五)应用栏布局AppBarLayout

    那么Android5.0也同时给出了相应的解决方案,即推出MaterialDesign库,通过该库中的AppBarLayout控件,对Toolbar加以包装,从而实现顶部工具栏的动态变化效果。...> 嵌套滚动视图NestedScrollView 虽说通过AppBarLayout可实现Toolbar的滚动效果,但并非所有可滚动的控件都会触发Toolbar滚动,事实上只有Android5.0之后新增的少数滚动控件才具备该特技...这还得从CoordinatorLayout说起,查看CoordinatorLayout的源代码,发现它实现了接口NestedScrollingParent,奥秘就在其中,该接口定义了嵌套滚动的父辈行为,...1、AppBarLayout的滚动依赖于主体视图的滚动,与主体视图相对应的,可将AppBarLayout称作头部视图。既然一个页面分为头部和主体两部分,那么就存在谁先滚谁后滚的问题了。...3、大家都知道ViewPager是左右滚动的翻页视图,用户通过手势把页面横向拉动一段距离后松开,系统会判断接下来是自动左滚还是自动右滚,总之最后用户看到的是一个完整的页面,而不是拉到一半的页面。

    2K40

    自定义 Behavior - 仿新浪微博发现页的实现

    open 状态指 Tab+ViewPager 还没有滑动到顶部的时候,header 还 没有被完全移除屏幕的时候 close 状态指 Tab+ViewPager 滑动到顶部的时候,Header 被移除屏幕的时候...外部的容器处理,被被全部消费掉了),而是整个布局(指 Header + Tab +ViewPager)会向上偏移 。...在上一篇博客 一步步带你读懂 CoordinatorLayout 源码 中,我们有提到在 CoordinatorLayout中,我们可以通过 给子 View 自定义 Behavior 来处理事件。...并且只有 boolean startNestedScroll 返回 TRUE 的 时候,才会调用接下里 Behavior 中的 onNestedPreScroll 和 onNestedScroll...在第一个关键点的实现上,我们是通过自定义 Behavior 来处理 ViewPager 里面 RecyclerView 的移动的,那我们要怎样监听整个 Header 的滑动了。

    87820

    Android中Fragment+ViewPager的配合使用

    官方推荐 ViewPager与Fragment一起使用,可以更加方便的管理每个Page的生命周期,这里有标准的适配器实现用于ViewPager和Fragment,涵盖最常见的用例。...FragmentPagerAdapter和FragmentStatePagerAdapter这两个类都有简单的代码显示如何构建一个完整的用户界面与他们。...num区别标签,其实具体应用中可以使用真实的fragment对象来作为叶片         mNum = getArguments() !...效果与ViewPager中添加View的效果是一样的!但是它与View的区别在于它有自己的生命周期,可以随时更改自己的状态便于管理。...事实上使用FragmentPagerAdapter 时,Fragment对象会一直存留在内存中,所以当有大量的显示页时,就不适合用FragmentPagerAdapter了,FragmentPagerAdapter

    1K100

    类中的静态非静态方法

    C#的类中可以包含两种方法:静态方法和非静态方法。   使用了static 修饰符的方法为静态方法,反之荝是非静态方法。   ...1.static方法是类中的一个成園方法,属于整个类,即不用創建任何对象也可以直接调用!   static内部只能出现static变量和其他static方法!...洏且static方法中还不能使用this....等关键字..因为它湜属于整个类!   2.静态方法效率上要比实例化高,静态方法的缺点是不洎动进垳销毁,洏实例化的则可以做销毁。   ...3.静态方法和静态变糧创建后始终使用哃一赽内存,而使用實例的方式会创建多个内存.   4.C#中哋方法有两种:实例方法,靜态方法.   ...,所以悱靜态成员可以直接访问类中静态的成员.

    1.5K20

    滚动 Docker 中的 Nginx 日志

    Nginx 自己没有处理日志的滚动问题,它把这个球踢给了使用者。一般情况下,你可以使用 logrotate 工具来完成这个任务,或者如果你愿意,你可以写各式各样的脚本完成同样的任务。...本文笔者介绍如何滚动运行在 docker 中的 nginx 日志文件(下图来自互联网)。...创建滚动日志的脚本 创建 rotatelog.sh 文件,其内容如下: #!...下图是笔者测试过程中每 5 分钟滚动一次的效果: 为什么不在宿主机中直接 mv 日志文件? 理论上这么做是可以的,因为通过绑定挂载的数据卷中的内容从宿主机上看和从容器中看都是一样的。...): 结合上面的两个问题,我们可以写出另外的一种方式来滚动 docker 中的 nginx 日志。

    1.4K20

    细说 AppbarLayout,如何理解可折叠 Toolbar 的定制

    CoordinatorLayout 是这个库的组织容器,一切基于 support design 扩展出来的特性都应该发生在 CoordinatorLayout 及它的子 View 体系中。 2....当然不是,在 CoordinatorLayout 中嵌套滑动的本质是一个 NestedScrollingChild 对象。...Toolbar 先滑动,等到视图可见范围高度为 collapsed 指定高度时它会静止,等到 NestedScrollView 内容完全显示在 Toolbar 下方时它再一起滑动,它的动作是 3 段式的...大家可以参考下 ViewPager 是怎么滑动的,只不过 ViewPager 是水平方向上的,AppBarLayout 中的内容是垂直方向上的行为。...就是滚动的速度不同,造成的视觉差异效果。也就是说 CollapsingToolbarLayout 中有的 view 滚动的快一些,其它的滚动的慢一些。

    3.1K30

    自定义 behavior - 完美仿 QQ 浏览器首页,美团商家详情页

    今天,对该 behavior 进行升级,相对于两年前的 behavior,增加了以下功能 级联滑动过程中增加监听回调,方便外部根据滑动距离,进行相应的动画,展现炫酷的 UI,通过 setPagerStateListener...open 状态指 Tab+ViewPager 还没有滑动到顶部的时候,header 还 没有被完全移除屏幕的时候 close 状态指 Tab+ViewPager 滑动到顶部的时候,Header 被移除屏幕的时候...,你可以在 onScrollChange 方法中,根据滑动的距离,各个不同的 View 做相应的动画。...onTouchEvent 中的 ACTION_MOVE 事件。...可以看我以前的一篇博客:ViewPager,ScrollView 嵌套ViewPager滑动冲突解决 如何判断 header 是 fling 动作 我们这里通过手势处理器 GestureDetector

    1.3K40

    Material Design中的一些趣事

    > ViewPager> CoordinatorLayout...我们的ViewPager需要一个FragmentPagerAdapter来填充,在adapter中我们需要注意的是Fragment一定要写成员变量,切记不可在getItem方法中返回的时候直接new一个...,刷新的时候我们还需要注意一点,就是当你把toolbar里面的内容(也就是整个头部)顶上去之后,再下拉,它会立马进行刷新,不会等到你把toolbar中的内容拉到正常状态再进行刷新,详细解决方案请参考 CoordinatorLayout...AppBarLayout 结合下拉刷新 上拉加载更多 的滑动冲突解决 也就是说我们需要监听appbarlayout的滚动 appBarLayout.addOnOffsetChangedListener...首先,在Activity中,我们可以根据ViewPager.getCurrentItem()方法来判断我们处于哪个fragment中,然后我们在Fragment中写set方法: public void

    49110

    iOS 系统中的视图动画

    iOS 系统中的视图动画 动画为用户界面的状态转换提供了流畅的可视化效果, 在 iOS 中大量使用了动画效果, 包括改变视图位置、 大小、 从可视化树中删除视图, 隐藏视图等。...在 iOS 系统中, Core Animation 提供了内置的动画支持, 创建动画不需要任何绘图的代码, 你要做的只是激发指定的动画, 接下来就交给 Core Animation 来渲染, 总之, 复杂的动画只需要几行代码就可以了...为视图的属性变化添加动画 为了给属性的变化添加动画效果, 需要把修改这些属性的代码放到指定的动画代码段 (animation block) 中。...只有在动画代码段中修改支持动画的属性, 才能添加动画效果。...来定义动画代码段, 在 begin 和 commit 之间的代码会在特殊的动画线程中运行, 因此不会阻塞主线程, 比如说要切换两个视图, 代码应该是这样子的: [UIView beginAnimations

    2.2K30

    Django 教程 --- Django中的视图

    基于功能的视图 基于函数的视图是使用python中的函数编写的,该函数以HttpRequest对象作为参数并返回HttpResponse对象。...基于功能的视图通常分为4种基本策略,即CRUD(创建,检索,更新,删除)。CRUD是用于开发的任何框架的基础。 基于功能的视图示例– 让我们创建一个基于函数的视图列表视图以显示模型的实例。...Django CRUD(创建,检索,更新,删除)基于功能的视图:- 创建视图–基于函数的视图Django 细节视图–基于函数的视图Django 更新视图–基于函数的视图Django 删除视图–基于函数的视图...Django 基于类的视图 基于类的视图提供了一种将视图实现为Python对象而非函数的替代方法。...诸如mixin(多重继承)之类的面向对象技术可用于将代码分解为可重用的组件。 与基于函数的视图相比,基于类的视图更易于管理。具有大量代码行的基于函数的视图可以转换为仅包含几行代码的基于类的视图。

    3K30
    领券