Es ist ein bekannter Fehler, dass das Scrollen dieser Ansicht das Scroll-Verhalten von AppBarLayout beeinträchtigt, wenn ein AppBarLayout eine scrollbare Ansicht enthält.AppBarLayout deaktiviert das Ziehen der ausgewählten Ansicht
Viele Antworten auf SO schlagen folgende Lösung
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);
Und das funktioniert gut, außer wenn es einen anderen Blick in die AppBarLayout ist das in der Lage sein sollte, die AppBarLayout zu blättern.
Hier ist mein Layout:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:mapbox="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:fitsSystemWindows="true">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsingToolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<fragment
android:id="@+id/mapFragment"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_collapseMode="parallax" />
</android.support.design.widget.CollapsingToolbarLayout>
<include layout="@layout/custom_layout"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="?attr/colorAccent"/>
</android.support.design.widget.AppBarLayout>
Ich möchte die Karte in der Lage sein zu blättern (dies funktioniert, indem von canDrag falsch zurückkehrt), aber noch in der Lage sein, um das Layout zu kollabieren, wenn die custom_layout Element berührt wird und nach oben bewegt .
Also brauche ich so etwas wie
behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() {
@Override
public boolean canDrag(AppBarLayout appBarLayout) {
if(mapIsScrolled)
return false;
else
return true;
}
});
Irgendwelche Ideen, wie dies zu erreichen?
Hey, wie hast du dieses Problem gelöst? – Anupriya