首页后端开发其他后端知识想要禁止CoordinatorLayout中滚动AppBarLayout,需要怎么做?

想要禁止CoordinatorLayout中滚动AppBarLayout,需要怎么做?

时间2024-03-28 14:36:03发布访客分类其他后端知识浏览741
导读:相信很多人对想要禁止CoordinatorLayout中滚动AppBarLayout,需要怎么做都不太了解,下面小编为你详细解释一下这个问题,希望对你有一定的帮助 我有AppBarLayout中具有视差效果的MapFragment,我想...
相信很多人对想要禁止CoordinatorLayout中滚动AppBarLayout,需要怎么做都不太了解,下面小编为你详细解释一下这个问题,希望对你有一定的帮助

我有AppBarLayout中具有视差效果的MapFragment,我想在AppBarLayout上禁用滚动,因为不可能在地图上移动,因为地图上的触摸偶数总是作为滚动事件处理.

我想通过仅滚动RecyclerView(位于屏幕底部)来处理AppBarLayout的折叠。


xml代码

?xml version="1.0" encoding="utf-8"?>
    
androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@ id/coordinator_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/public_white"
    android:fitsSystemWindows="false">
    

    com.google.android.material.appbar.AppBarLayout
        android:id="@ id/app_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/public_white"
        app:elevation="0dp">
    

        com.google.android.material.appbar.CollapsingToolbarLayout
            android:id="@ id/collapsing_toolbar_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/public_background"
            android:paddingBottom="@dimen/public_dim20"
            app:contentScrim="#000000"
            app:layout_scrollFlags="scroll|enterAlwaysCollapsed"
            app:titleEnabled="false">
    

            LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/public_white"
                android:orientation="vertical">
    

                RelativeLayout
                    android:id="@ id/player_container"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">
    

                    !--View-->
    
                    !--    android:id="@ id/video_player"-->
    
                    !--    android:layout_width="match_parent"-->
    
                    !--    android:layout_height="@dimen/public_height_210dp" />
    -->
    

                    com.aliyun.player.alivcplayerexpand.widget.AliyunVodPlayerView
                        android:id="@ id/video_player"
                        android:layout_width="match_parent"
                        android:layout_height="@dimen/public_dim420" />
    

                    !--RelativeLayout-->
    
                    !--    android:id="@ id/back_layout"-->
    
                    !--    android:layout_width="wrap_content"-->
    
                    !--    android:layout_height="@dimen/public_height_50dp"-->
    
                    !--    android:gravity="left">
    -->
    

                    !--    ImageView-->
    
                    !--        android:layout_width="wrap_content"-->
    
                    !--        android:layout_height="wrap_content"-->
    
                    !--        android:layout_centerVertical="true"-->
    
                    !--        android:layout_marginLeft="@dimen/public_margin_10dp"-->
    
                    !--        android:layout_marginRight="@dimen/public_margin_10dp"-->
    
                    !--        android:src="@mipmap/public_ic_arrow_back_white_24dp" />
    -->
    

                    !--/RelativeLayout>
    -->
    

                /RelativeLayout>
    

                TextView
                    android:id="@ id/tv_coure_name_view"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:padding="@dimen/public_dim32"
                    android:textColor="@color/public_main_text_color" />
    

                TextView
                    android:id="@ id/tv_introduction_name_view"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingStart="@dimen/public_dim32"
                    android:paddingEnd="@dimen/public_dim32"
                    android:paddingBottom="@dimen/public_dim32"
                    android:textColor="@color/public_main_text_color" />
    

            /LinearLayout>
    

        /com.google.android.material.appbar.CollapsingToolbarLayout>
    

        LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:orientation="vertical"
            app:layout_collapseMode="pin"
            app:layout_scrollFlags="exitUntilCollapsed|enterAlways|enterAlwaysCollapsed">
    

            net.lucode.hackware.magicindicator.MagicIndicator
                android:id="@ id/magic_indicator"
                android:layout_width="match_parent"
                android:layout_height="@dimen/public_dim100" />
    

        /LinearLayout>
    

    /com.google.android.material.appbar.AppBarLayout>
    

    androidx.viewpager.widget.ViewPager
        android:id="@ id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/public_white"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    

/androidx.coordinatorlayout.widget.CoordinatorLayout>
    


DragCallback界面允许选择是否通过滚动到AppBarLayout来控制兄弟滚动视图,您可以通过调用来定义一个:

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
    
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();

behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() {

    @Override
    public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
    
        return false;

    }

}
    );
    


通常总是返回false,您的滚动视图将不再被ABL控制,注意:在调用它之前,应该检查ViewCompat.isLaidOut(appBarLayout),否则params.getBehavior()将返回null,

通过以上内容的阐述,相信大家对想要禁止CoordinatorLayout中滚动AppBarLayout,需要怎么做已经有了进一步的了解,更多appbarlayout的问题,欢迎关注网络或到官网咨询客服。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 想要禁止CoordinatorLayout中滚动AppBarLayout,需要怎么做?
本文地址: https://pptw.com/jishu/655003.html
Flutter 和 Android 混编有哪些常见的坑? html5怎样实现页面跳转,有哪些方式

游客 回复需填写必要信息