Я использовал некоторый код, который нашел здесь, чтобы добавить MovableFloatingActionButton (этот объект расширяет FloatingActionButton, просто делает его подвижным) к моей MainActivity. MovableFloatingActionButton перемещается по экрану очень хорошо, включая область CollapsingToolbarLayout, но как только я освобождаю палец от экрана, а затем снова пытаюсь переместить FloatingActionButton, AppBarLayout начинает двигаться (в вертикальном направлении) вместо MovableFloatingActionButton в вертикальном направлении. Нет ли в AppBarLayout какого-либо флага, который бы указывал не принимать команды onTouch () от объектов, нависающих над ним?
Я использовал обходной путь AppBarLayout поведения.setDragCallback, чтобы AppBarLayout прекратил захват onTouch, но это не оптимально, потому что это отключает возможность касания AppBarLayout для прокрутки всего просмотра вверх и вниз. Внутри "layout / content_main" находится просто LinearLayout с RecyclerView, который показывает список под областью CollapsingToolbarLayout. Внутри CollapsingToolbarLayout находится LinearLayout из 8 вертикально сложенных TextView.
activity_main.xml
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="HardcodedText"
tools:context=".MainActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
>
<!--app:layout_behavior="com.ktoonsez.golfclubtracker.FixedAppBarLayoutBehavior"
app:layout_collapseMode="parallax"-->
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsingToolbarLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:contentScrim="?attr/colorPrimary">
<!--<ImageView
android:src="@drawable/background_sky"
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="156dp"
android:scaleType="centerCrop"
/>-->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
<com.ktoonsez.golfclubtracker.MovableFloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/ic_menu_mylocation" />
</android.support.design.widget.CoordinatorLayout>
Пример того, что я использовал для отмены вертикального перетаскивания
appBarLayout = findViewById(R.id.appBarLayout);
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
params.setBehavior(new AppBarLayout.Behavior());
//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; //Globals.AppBarLayoutCanDrag;
}
});
Итак, в конце я просто хочу иметь возможность перемещать свою MovableFloatingActionButton по всему экрану (область RecyclerView и область AppBarLayout) и по-прежнему иметь возможность прокручивать из AppBarLayout (область довольно большая, около 1 / От 3 до 1/4 экрана в зависимости от данных.
Спасибо