Panning google map in CoordinatorLayout causes recyclerview to scroll in android design support library 23.0.1

ぃ、小莉子 提交于 2019-12-02 23:21:14

I faced the same problem and solved it this way.

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = new AppBarLayout.Behavior();
behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() {
       @Override
       public boolean canDrag(AppBarLayout appBarLayout) {
            return false;
       }
});
params.setBehavior(behavior);

The same you asked was reported as a Bug

After that AppBarLayout.Behavior.DragCallback came to existence. This was you can disable or drag events inside container.

    AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appbar_layout);
        CoordinatorLayout.LayoutParams params = 
                (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
        AppBarLayout.Behavior behavior = new AppBarLayout.Behavior();
        behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() {
            @Override
            public boolean canDrag(AppBarLayout appBarLayout) {
                return false;
            }
        });
params.setBehavior(behavior);

Here's the same solution but in Kotlin:

    val appBarLayout = findViewById<AppBarLayout>(R.id.appBar)
    val params = appBarLayout.layoutParams as CoordinatorLayout.LayoutParams
    val behavior = AppBarLayout.Behavior()
    behavior.setDragCallback(object : AppBarLayout.Behavior.DragCallback() {
        override fun canDrag(appBarLayout: AppBarLayout): Boolean {
            return false
        }
    })
    params.behavior = behavior
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!