在CoordinatorLayout中平移谷歌地图会导致recyclerview在Android设计支持库23.0.1中滚动

该地图位于collapsingToolbarLayout中,该套接字嵌套在appBarLayout中。 在Android设计支持库的22.2.0和22.2.1版本中,我可以独立于coordinatorLayout平移地图,但在23.0.1中,如果我尝试在北/南轴上平移地图,则会导致recyclelerview向上/向下滚动。 这是一个错误还是有办法将触摸事件从appBarLayout传递到mapFragment?

       

我遇到了同样的问题并以这种方式解决了。

 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); 

你问的同样被报道为Bug

之后, AppBarLayout.Behavior.DragCallback成为现实。 这是您可以禁用或拖动容器内的事件。

  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); 

这是Kotlin的相同解决方案:

  val appBarLayout = findViewById(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