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

BottomNavigationView不会隐藏在viewpager中的scroll - NestedScrollView上

BottomNavigationView是Android的一个UI组件,通常用于底部导航栏的实现。它提供了多个选项卡按钮,并可以与ViewPager结合使用以在不同的选项卡之间进行切换。

在某些情况下,如果将BottomNavigationView与包含可滚动内容的NestedScrollView结合使用,可能会出现导航栏无法隐藏的问题。这是因为NestedScrollView会将滚动事件捕获并消耗掉,导致BottomNavigationView无法正确处理滚动逻辑。

要解决这个问题,可以采取以下方法之一:

  1. 使用CoordinatorLayout:将BottomNavigationView直接放置在CoordinatorLayout中,并将NestedScrollView放在CoordinatorLayout的子布局中。然后使用app:layout_behavior属性将NestedScrollView与BottomNavigationView关联起来。这样,NestedScrollView滚动时,BottomNavigationView会自动隐藏和显示。
  2. 手动监听滚动事件:在代码中监听NestedScrollView的滚动事件,根据滚动位置来手动控制BottomNavigationView的隐藏和显示。可以通过添加OnScrollChangeListener来实现此功能,例如:
代码语言:txt
复制
nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
    @Override
    public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
        if (scrollY > oldScrollY) {
            // 向上滚动,隐藏BottomNavigationView
            bottomNavigationView.animate().translationY(bottomNavigationView.getHeight());
        } else {
            // 向下滚动,显示BottomNavigationView
            bottomNavigationView.animate().translationY(0);
        }
    }
});

需要注意的是,上述代码中的bottomNavigationView是指BottomNavigationView的实例,nestedScrollView是指NestedScrollView的实例。

综上所述,通过使用CoordinatorLayout或手动监听滚动事件,可以解决BottomNavigationView在NestedScrollView中无法隐藏的问题。

腾讯云相关产品推荐:

  • 腾讯云移动开发平台:https://cloud.tencent.com/product/mabp
  • 腾讯云服务器(云服务器、云数据库等):https://cloud.tencent.com/product/cvm
  • 腾讯云AI开放平台(提供人脸识别、语音识别等人工智能服务):https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台(提供设备接入、数据存储、消息通信等物联网服务):https://cloud.tencent.com/product/iothub
  • 腾讯云对象存储(提供大规模、安全、低成本的云端存储服务):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(提供简单、可扩展、安全的区块链解决方案):https://cloud.tencent.com/product/tbaas
  • 腾讯云音视频处理(提供音视频处理、直播推流、点播存储等音视频服务):https://cloud.tencent.com/product/mps
  • 腾讯云安全运营中心(提供安全威胁检测、漏洞扫描等网络安全服务):https://cloud.tencent.com/product/ssoc
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • CoordinatorLayout使用(四):和Toolbar简单使用

    其中snap是后面添加scroll: 代码枚举SCROLL_FLAG_SCROLL 所有想滚动出屏幕view都需要设置这个flag, 没有设置这个flagview将被固定在屏幕顶部。...这里,如果设置scroll,也就是为true时候,上面的Toolbar就会跟着滑动,并且会隐藏 反之,不设置,也就是false,就不会隐藏,只会固定不动 snap相关(scroll条件下)...设置snap必须是scroll为true情况下,不然,不能动,也不会有效果 设置snap也就是为true时候,是判断后弹性,它将滑动到最近边界 反之,不设置,也就是false,就不会自动滑动...设置enterAlwaysCollapsed必须是scroll为true,enterAlways为true情况下,不然,不会有效果 设置enterAlwaysCollapsed也就是为true时候,..." 再给Fragment添加一点TextView 在Activity,绑定对应TabLayout和ViewPager tabLayout = (TabLayout) findViewById(R.id.tablayout

    1.5K30

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

    为了让App页面更加生动活泼,势必要求Toolbar在某些特定场景移或者下拉,如此才能满足酷炫页面特效需要。...那么Android5.0也同时给出了相应解决方案,即推出MaterialDesign库,通过该库AppBarLayout控件,对Toolbar加以包装,从而实现顶部工具栏动态变化效果。...,还要通知头部控件(通常是Toolbar),告诉头部控件你要怎么滚,是爱咋咋滚,还是满大街滚; 具体到实现,要在工程做以下修改: 1、添加几个库支持,包括appcompat-v7库(Toolbar...3、大家都知道ViewPager是左右滚动翻页视图,用户通过手势把页面横向拉动一段距离后松开,系统会判断接下来是自动左滚还是自动右滚,总之最后用户看到是一个完整页面,而不是拉到一半页面。...3、exitUntilCollapsed : 该标志保证页面上至少能看到最小化工具栏,不会完全看不到工具栏。具体滚动说明如下所示: 向上滚动:头部先往上收缩,一直滚到折叠最小高度。

    2K40

    Android 两个ViewPager联动效果实现

    前言 以前做项目,导航栏基本是在顶部或者是在底部,但是最近开发一款app,刚开始拿到设计图也是很懵逼,导航栏居然是在中间,what fuck!设计图如下: ?...导航栏在中间就会涉及到两个viewpager之间联动,viewpager高度适应等问题,现在来纪录一下是怎么解决问题?希望给有同样需求提供一定帮助。...(一)Viewpager 高度自适应 系统自动viewpager 不能设置wrap_content; 自定义viewpager,注意高度设置否则底部空白问题 网上也会有很多相关教程,我选择了其中一个...联动 联动ViewPager意思就是当一个viewpager在滑动时候,另外一个ViewPager也跟着滑动,而且两者是同步。...如果ViewPager有关于移动距离回调接口,这事儿就好办了,遗憾是没有,只有一个OnPageChangeListener,我试过在OnPageChangeListener根据onPageScrolled

    1.4K20

    Android嵌套滑动冲突解决方法

    (1)重写一个viewpager继承系统ViewPager,至于怎么重写我不太记得了 (2)重写RecyclerView继承系统RecyclerView,因为我记得会出现高度原因导致RecyclerView...当时虽然能解决,但是最后效果很变扭。 三.现在做法 现在我肯定不会像之前一样做,因为出了一个新控件NestedScrollView。...不会产生滑动冲突。...所以说直接嵌套一层ViewPager情况是无法解决滑动冲突。 那有一个很直接办法就是不用ViewPager,用FragmentManager,这样就能实现解决滑动冲突。...这样做就能解决一个activity多个fragment情况下滑动冲突。 但是有的朋友说不嘛,我就要Viewpager,我就要酷酷滑动动画效果。唉,那你就用最实在第三方法吧。

    3.2K21

    NestedScrolling机制之CoordinatorLayout.Behavior实战

    在上一讲我们讲了NestedScrolling机制,其实android很多有些常用控件都是支持NestedScrolling机制,如RecyclerView,NestedScrollView等,...extends FrameLayout implements NestedScrollingParent2,NestedScrollingChild2, ScrollingView{} 这些控件内部用就是我们一讲东西...,手松开时候调用一次 * 返回true代表获取滑动事件,其他scroll事件就会被触发 * coordinatorLayout * child 使用此BehaviorView * directTargetChild...GoodsListView child, @NonNull View target, float velocityX, float velocityY, boolean consumed); 是不是和我们一讲...onStartNestedScroll():当(axes & ViewCompat.SCROLL_AXIS_VERTICAL)!=0既表示竖直滑动嵌套滑动就开始了,最主要作用就是确定滑动方向。

    88910

    听说谷歌Baba更新了 Material UI ...

    来瓶哇哈哈,精神抖擞来一波~ 简单回顾 Material Design,是谷歌在14年IO大会上提出一种新理念,也被称为新设计语言(也被称为“原材料设计”),称它为设计语言不为过,但是实际,这仅仅是谷歌提倡一种新设计风格...       }    } } Step 2:修改编译版本 // 2.修改编译版本为 android - P compileSdkVersion 'android-P' Step 3:移除项目工程依赖...app:menu属性设置为菜单资源; 设置选择监听事件setOnNavigationItemSelectedListener(…)。...那下面按照步骤操作一次: Step 1:在布局添加BottomNavigationView: <com.google.android.material.bottomnavigation.BottomNavigationView...app:behavior_peekHeight:折叠状态窥视高度。 app:behavior_skipCollapsed:如果底部表单可隐藏,并且设置为true,则表单不会处于折叠状态。

    3K20

    CoordinatorLayout使用(三):NestedScrollView & 嵌套滑动事件

    一篇,我们大体理解了 Behavior流程 和 事件流 具体代码可以见 https://github.com/2954722256/use_little_demo 对应 coordinator ...一篇唯一例子,是事件流 CoordinatorLayout关联事件 而其中, 事件流,嵌套滑动事件 我们 只是了解了 NestedScrollingChild , NestedScrollingParent...---- 嵌套滑动事件 简单实例 注意: 这里是用 事件流 嵌套滑动事件 去处理 我们可以用NestedScrollView做事件发送,给外面的Parent发事件, 再传递给Behavior...(直接true包含横向也行,后面不会获取对应值) void onNestedScroll 对应滑动时候,处理事情 当然,这里换成void onNestedPreScroll 效果是差不多, 具体只是...添加简单动画 这里只是为了理解 嵌套滑动事件 应该会有一些bug 自己就不继续了 ---- 简单回顾 这里几个demo,只是一节理论实例 用NestedScrollView简单理解了 NestedScrolling

    10.6K40

    聊聊Android嵌套滑动

    在嵌套滑动控件场景,可以在Android事件分发机制本身做一些处理,外部拦截或者内部消化触摸事件。...view(例如 NestedScrollView 、 RecyclerView ) ,开始嵌套滑动都依赖NestedScrollingChildHelper 这个对象。...并且子 View 在消费了事件之后,还可以把剩下没有消费事件交给父 View 继续处理,这样滑动事件就不会很突兀,非常给力。...CoordinatorLayout 在布局其实和我们常见 FrameLayout 没有差别,但是它内部实现了嵌套滑动接口来支持包裹一个可以支持嵌套滑动Scroll 组件,并且把交互抽象到 Behavior...例如上图,当dy大于0,说明是向上滑动,如果最新top值比展开状态坐标小,那么就把状态置为 STATE_EXPANDED , 然后调用 offsetTopAndBottom 做距离变换。

    1.3K10

    【Android自定义控件】不用ScrollView实现上下两屏滑动

    前言 思路 代码 使用方法 补充 前言 近期项目原因需要一个上下两屏滑动效果。可以想象成viewpager左右滑动变成上下滑动。...其实就是两个大小一样布局,一个显示在屏幕,另一个隐藏在屏幕外,等到滑动时候就显示出来。 代码 我这边继承是ViewGroup 。...event.getY(); int deltaY = mMostRecentY - moveY; // 如果在菜单打开时向上滑动及菜单关闭时向下滑动不会触发...如果比较多的话,那就通过在onTouchEvent () getParent().requestDisallowInterceptTouchEvent(bool)来设置哪个控件响应事件。...一般思路是list滑动到头和尾时候,才将相应方向滑动事件传给父组件。

    73020
    领券