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

当我们隐藏一个布局时,如何阻止Nestedscrollview滚动

当我们隐藏一个布局时,可以通过设置NestedScrollView的滚动监听来阻止其滚动。具体步骤如下:

  1. 首先,找到NestedScrollView的实例,并设置一个滚动监听器:
代码语言:txt
复制
NestedScrollView nestedScrollView = findViewById(R.id.nestedScrollView);
nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
    @Override
    public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
        // 在这里处理滚动事件
    }
});
  1. 在滚动监听器的回调方法中,判断需要隐藏的布局是否已经隐藏,如果已经隐藏,则通过调用NestedScrollView的smoothScrollTo()方法将滚动位置设置回原来的位置,从而阻止滚动:
代码语言:txt
复制
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
    View hiddenLayout = findViewById(R.id.hiddenLayout);
    if (hiddenLayout.getVisibility() == View.GONE) {
        nestedScrollView.smoothScrollTo(scrollX, oldScrollY);
    }
}

这样,当隐藏布局时,NestedScrollView会自动滚动到原来的位置,从而阻止滚动。

NestedScrollView是Android Support库中提供的一个可嵌套滚动的容器,它继承自ScrollView,并支持在其中嵌套其他可滚动的视图。它的优势在于可以处理复杂的滚动场景,例如嵌套滚动和惯性滚动等。

推荐的腾讯云相关产品:腾讯云移动推送服务(https://cloud.tencent.com/product/umeng_push)、腾讯云移动直播(https://cloud.tencent.com/product/mlvb)、腾讯云云点播(https://cloud.tencent.com/product/vod)等。

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

相关·内容

Android 天气APP(十)继续优化、下拉刷新页面天气数据

可以看到我在androidx.core.widget.NestedScrollView的外层嵌套了一个com.scwang.smartrefresh.layout.SmartRefreshLayout(...--NestedScrollView 里面只能包裹一个大的布局这个布局长度超出手机展示的部分就可以滚动,其中overScrollMode="never"...的意思是隐藏滚动条到顶部和底部的水波纹--> <androidx.core.widget.NestedScrollView...上图中红线框中的布局就是下拉刷新布局。...增加定位图标 之前我想了一下,定位的话还是给一个定位图标比较好,未获取到数据之前显示定位中,获取数据之后显示定位到的城市和定位图标,这样可以增加用户的体验,虽然很多人不会注意这个小细节,但是很多APP之所以受欢迎就是因为细节做得好

1.1K30
  • AppBarLayout学习

    AppBarLayout是一个垂直的LinearLayout,实现了很多和协调布局一起合作的滚动属性。...> 父布局是CoordinatorLayout,然后主要两个布局:AppBarLayout以及NestedScrollView...,NestedScrollView设置了layout_behavior属性,这样AppBarLayout里面的布局就可以跟着一起滚动,不过由于这里还没给AppBarLayout里面的scrollFlags...滚动最顶层,子View响应滚动事件,直至子View完全显示 exitUtilCollapsed:只要ScrollView向上滚动,子View立即响应滚动,直到达到最小高度 snap:Scrollview...向下滚动ScrollView滚动顶部了,才继续滚动了。 snap snap是一个根据View在屏幕上显示范围进行调整的一个属性,看下效果其实就明白是怎么回事了。

    1.1K30

    聊聊Android嵌套滑动

    我们仍然从它的touch事件处理流程开始看: 在它的 onInterceptTouchEvent 中,手势是 MOVE 的时候, 如果是垂直方向滑动并且达到滑动定义的距离,就开始执行滑动: 手势是...接下来看下,如果拦截下来了, NestedScrollView如何处理触摸事件的: DOWN 的时候直接触发嵌套滑动: MOVE 的时候 在 mIsBegingDragged 的false但是距离还没到的时候...,让父布局不要拦截事件, mIsBegingDragged 为true的时候,分发嵌套预滚动事件。...CoordinatorLayout 在布局上其实和我们常见的 FrameLayout 没有差别,但是它内部实现了嵌套滑动的接口来支持包裹一个可以支持嵌套滑动的Scroll 组件,并且把交互抽象到 Behavior...这里的 bottomsheet Dialog 的布局,其实是 design 包里面内置的,我们也可以自己实现这个dialog,布局是这样的: 这里需要让它第二个子view传入一个 behavior

    1.3K10

    CoordinatorLayout使用全解析

    enterAlwaysCollapsed:假设你定义了一个最小高度(minHeight)同时enterAlways也定义了,那么view将在到达这个最小高度的时候开始显示,并且从这个时候开始慢慢展开,滚动到顶部的时候展开完...exitUntilCollapsed:当你定义了一个minHeight,此布局将在滚动到达这个最小高度的时候折叠。 snap:一个滚动事件结束,如果视图是部分可见的,那么它将被滚动到收缩或展开。...CollapsingToolbarLayout的子布局设置了parallax模式我们还可以通过app:layout_collapseParallaxMultiplier设置视差滚动因子,值为:0~...假设你定义了一个最小高度(minHeight)同时enterAlways也定义了,那么view将在到达这个最小高度的时候开始显示,并且从这个时候开始慢慢展开,滚动到顶部的时候展开完。...exitUntilCollapsed: 同样顾名思义,这个flag定义何时退出,当你定义了一个minHeight,这个view将在滚动到达这个最小高度的时候消失。

    2.1K20

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

    对于大家关心的额外功能,则主要有以下几点: 1、支持响应主体页面的滑动行为,即在主体页面上移或者下拉,AppBarLayout能够捕捉到主体页面的滚动操作; 2、AppBarLayout捕捉到滚动操作之后...RecyclerView是其中一个特工,它可用来替代ListView和GridView;替代ScrollView的则另有其人,它便是嵌套滚动视图NestedScrollView,在Android5.0之后的...NestedScrollView继承自FrameLayout,其用法与ScrollView相似,如都必须且只能带一个直接子视图,都是允许视图上下滚动等等。...同理,拉动AppBarLayout也有类似情况,松开手指后,AppBarLayout得判断要不要继续向上收缩,或是继续向下展开。...然后主体向下滚动,滚到位后头部继续向下展开。 5、snap : 在用户手指松开,系统自行判断,接下来是全部向上滚到顶,还是全部向下展开。

    2K40

    Flutter 首页必用组件NestedScrollView的示例详解

    今天介绍的组件是NestedScrollView,大部分的App首页都会用到这个组件。 可以在其内部嵌套其他滚动视图的滚动视图,其滚动位置是固有链接的。...在普通的ScrollView中, 如果有一个Sliver组件容纳了一个TabBarView,它沿相反的方向滚动(例如,允许用户在标签所代表的页面之间水平滑动,而列表则垂直滚动),则该TabBarView...滚动隐藏AppBar 比如实现如下场景,列表滚动隐藏AppBar,用法如下: NestedScrollView( headerSliverBuilder: (BuildContext context...其他属性 通过scrollDirection和reverse参数控制其滚动方向,用法如下: NestedScrollView( scrollDirection: Axis.horizontal, reverse...reverse参数表示反转滚动方向,并不是由垂直转为水平,而是垂直方向滚动,默认向下滚动,reverse设置false,滚动方向改为向上,同理水平滚动改为水平向左。

    4K40

    Flutter 首页必用组件NestedScrollView

    今天介绍的组件是NestedScrollView,大部分的App首页都会用到这个组件。 NestedScrollView 可以在其内部嵌套其他滚动视图的组件,其滚动位置是固有链接的。...在普通的ScrollView中, 如果有一个Sliver组件容纳了一个TabBarView,它沿相反的方向滚动(例如,允许用户在标签所代表的页面之间水平滑动,而列表则垂直滚动),则该TabBarView...滚动隐藏AppBar 比如实现如下场景,列表滚动隐藏AppBar,用法如下: NestedScrollView( headerSliverBuilder: (BuildContext context...,用法如下: NestedScrollView( scrollDirection: Axis.horizontal, reverse: true, ... ) scrollDirection...reverse参数表示反转滚动方向,并不是由垂直转为水平,而是垂直方向滚动,默认向下滚动,reverse设置false,滚动方向改为向上,同理水平滚动改为水平向左。

    4.2K10

    不一样角度带你了解 Flutter 中的滑动列表实现

    SliverList , 当我们滑动其实就是它在 Viewport 里的位置发生了变化; 了解完这个基础理念后,就可以知道一般情况下 Viewport 和  Scrollable 的实现都是很通用的...RenderBox 在 SingleChildScrollView 内部使用的是 RenderBox ,那么在布局过程中自然而然会把整个 child 都进行布局和计算,绘制主要也是通过 offset ...和 clip 等来完成移动效果,这样的实现 「child 比较复杂或者过长,性能就会变差」。... 本身是一个 ChangeNotifier, 主要是用来 markNeedsLayout 对外发出通知,比如对 header 部分; 所以 NestedScrollView 本质上两个 Viewport... 之间的嵌套,那他们之间是滑动关系是如何处理的?

    1.1K30

    不一样角度带你了解 Flutter 中的滑动列表实现

    SliverList 在 Viewport 里产生滑动; 黄色的部分就是 SliverList , 当我们滑动其实就是它在 Viewport 里的位置发生了变化; 了解完这个基础理念后,就可以知道一般情况下...RenderBox 在 SingleChildScrollView 内部使用的是 RenderBox ,那么在布局过程中自然而然会把整个 child 都进行布局和计算,绘制主要也是通过 offset...和 clip 等来完成移动效果,这样的实现 child 比较复杂或者过长,性能就会变差。...本身是一个 ChangeNotifier , 主要是用来 markNeedsLayout 对外发出通知,比如对 header 部分; 所以 NestedScrollView 本质上两个 Viewport...之间的嵌套,那他们之间是滑动关系是如何处理的?

    2.2K51

    嵌套滑动通用解决方案--NestedScrollingParent2

    京东首页 可见,在向上滑动页面tabLayout滑动到顶部,外层RecyclerView停止滑动,此时tabLayout即为吸顶状态,接着会 滑动ViewPager中的内层RecyclerView...向下滑动,如果tabLayout是吸顶状态,那么会先滑动内层RecyclerView,然后再滑外层RecyclerView。 那么,如果我们 直接 按上述布局结构来实现,会是京东这种效果吗?...所以按照正常处理滑动冲突的思路处理--tab没到顶部,parent拦截事件,tab到顶部 parent就不拦截事件,但是由于手指没抬起来,所以这一事件序列还是继续给parent,不会到内部RecyclerView...通常我们要自行手动处理的就是RecyclerView作为嵌套滑动子view的情况。NestedScrollView一般直接作为根布局用来解决嵌套滑动。...作者最后建议使用RecyclerView多布局。 但其实在真实应用中,可能 头部 和 列表 的数据来自不同的接口,列表的数据请求失败要展示缺省图,但头部还是会展示。

    3.7K31

    详解android特性之CoordinatorLayout用法探析实例

    当我在AS上新建一个module,系统默认的最外层布局不再是我们熟悉的五大布局中的一种,而是一个全新的布局:CoordinatorLayout。...要想要ToolBar响应滚动事件,这里我们需要用到一个控件:AppBarLayout,这个控件必须作为CoordinatorLayout的直接子View,才会响应滚动事件。...首先因为我们的TooBar是需要响应滚动的视图,所以需要为其配置一个属性:layout_scrollFlags。...然后呢,我们需要定义一下AppBarLayout与滚动视图(如RecyclerView,NestedScrollView等可以支持嵌套滚动的控件)supportlibrary包含了一个特殊的字符串资源@...exitUntilCollapsed: 同样顾名思义,这个flag定义何时退出,当你定义了一个minHeight,这个view将在滚动到达这个最小高度的时候消失。

    95841

    Android scrollview如何监听滑动状态

    ScrollView 视图的滚动过程,其实是在不断修改原点坐标。手指触摸后,ScrollView会暂时拦截触摸事件,使用一个计时器。...首先说一下NestedScrollView 的滑动事件的监听, 如果使用 nestedScrollView.setOnScrollChangeListener(new View.OnScrollChangeListener...我们可以自己定义一个ScrollView public class MyScrollView extends NestedScrollView { private OnScrollChanged...onScrollChanged() 监听滑动事件了 ,其中可以监测到滑动距离,这样就可以做好多事情了; 但是现在有一个需求就是【滑动的时候隐藏 一个靠边的悬浮框,不滑动是悬浮框显示出来】,这样的话就需要监测滑动状态了...cancel掉timer 总结 以上所述是小编给大家介绍的Android scrollview如何监听滑动状态,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

    5.4K30

    NestedScrolling机制之CoordinatorLayout.Behavior实战

    在上一讲中我们讲了NestedScrolling机制,其实android很多有些常用的控件都是支持NestedScrolling机制的,如RecyclerView,NestedScrollView等,...waimaidetails.gif 这种效果假如不用CoordinatorLayout其实还是有点难麻烦的,不过有了CoordinatorLayout就简单了,首先我们看一下布局文件: <?...在这布局里,我们看到一个比较特殊的东西app:layout_behavior="@string/goods_list_behavior",这是什么呢?...View是我们需要的View,返回true */ boolean layoutDependsOn(@NonNull CoordinatorLayout parent, @NonNull GoodsListView...onStopNestedScroll():看名字就知道了,停止滑动时调用的方法,主要是执行当滑到一般停止要怎么恢复还是隐藏商品列表的判断 onNestedFling(): 手指快速一划所触发的方法

    88910

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

    通过 AppBarLayout 实现一个可伸缩折叠的 Toolbar 也是本文的目的。 当我们运用 support design 中的组件我们应该拥有下面几个最基本的意识: 1.... AppBarLayout 中的内容要从 CoordinatorLayout 外面进入内部我们用 enter 指代这种行为,对应的手势就是向下滑动。... AppBarLayout 中的内容从 CoordinatorLayout 内部向外部方向移动我们用 exit 指代这种行为,对应的手势是向上滑动。...也就是说 snap 代表一种吸附的行为,一个滑动事件结束后,Toolbar 会向最接近它的边缘自行滚动。那什么是最近的概念呢?比如向上滑动,如果滑过了一半它就向上滚动,否则滚动回原来的地方。...如何理解视差?就是滚动的速度不同,造成的视觉差异效果。也就是说 CollapsingToolbarLayout 中有的 view 滚动的快一些,其它的滚动的慢一些。

    3K30
    领券