В моем приложении у меня есть 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, даже заменяя устаревшие методы новыми.
Любая помощьбудет оценена.