AppBarLayout для возврата к фиксированному смещению при отпускании - PullRequest
0 голосов
/ 14 октября 2018

В моем приложении у меня есть CollapsingToolBarLayout, внутри AppBarLayout, и оно содержит квадрат ImageView.Поскольку этот графический элемент занимает большую часть экрана устройства, я установил начальное смещение для AppBarLayout:

private void setAppBarOffset() {
    CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams();
    AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
    int difference = mAppBarLayout.getTotalScrollRange() - getSupportActionBar().getHeight();
    behavior.onNestedPreScroll(mCoordinatorLayout, mAppBarLayout, null, 0, (int) (difference * 0.51), new int[]{0, 0}, 0);
}

Это нормально, но давайте перейдем к конкретному вопросу.Как заставить AppBarLayout отскочить назад к этому фиксированному смещению всякий раз, когда он увеличивает его больше, а затем отпустить касание?Это будет своего рода точка привязки при 50% расширения AppBarLayout.

Полученный эффект был заархивирован с этой библиотекой , но он не использует CollapsingToolbarLayout, который мне нужен.

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_layout_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <ImageView
            android:id="@+id/songCoverImage"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:adjustViewBounds="true"
            android:scaleType="centerCrop"
            app:layout_collapseMode="parallax"
            app:layout_collapseParallaxMultiplier="0.7" />

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar_actionbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@android:color/transparent"
            app:layout_collapseMode="pin"
            app:elevation="16dp"
            app:layout_scrollFlags="enterAlways|exitUntilCollapsed" />

    </android.support.design.widget.CollapsingToolbarLayout>

</android.support.design.widget.AppBarLayout>

Приведенный выше код - это то, что я сейчас использую внутри родительского CoordinatorLayout.Честно говоря, я не мог найти столько, чтобы описать мою проблему подобным образом.Я взглянул на SO вопрос , который переопределяет AppBarLayout.Behavior, но, похоже, он не работает с более новой библиотекой поддержки 27, даже заменяя устаревшие методы новыми.

Любая помощьбудет оценена.

...