Я использую CollapsingToolBarLayout в своем основном действии, но хочу только, чтобы он расширялся в некоторых фрагментах. Для этого я использовал эти методы (сразу после операций фрагмента/отладки). Они успешно анимируют панель инструментов, но она по-прежнему расширяема в фрагментах, которые называются lockAppBarClosed.Предотвращение CollapsingToolBarLayout от расширения программно
public void unlockAppBarOpen(boolean animate){
appBarLayout.setExpanded(true, animate);
appBarLayout.setEnabled(true);
appBarLayout.setActivated(true);
}
public void lockAppBarClosed(boolean animate){
appBarLayout.setExpanded(false, animate);
appBarLayout.setEnabled(false);
appBarLayout.setActivated(false);
}
setEnabled
и setActivated
, кажется, ничего не делать.
Для справки, вот мой app_bar_main.xml файл:
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_extended"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<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:expandedTitleTextAppearance="@android:color/transparent"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:clickable="true"
android:background="?android:attr/selectableItemBackground"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</FrameLayout>
Я попытался установить высоту AppBarLayout через LayoutParams(), но это, для некоторых причина, предотвращает воспроизведение анимации, даже если для параметра animate
установлено значение true. Установка флажков прокрутки на ни один или always collapsed
ничего не делает, и я тоже не ищу эффект прокрутки snap
.
В идеале анимация панели приложения не должна быть в одном фрагменте (как и в обычном режиме), а также разворачивании/расширении анимации при переходе между фрагментами и желаемыми.
Если у вас есть предложения, они будут высоко оценены. Спасибо.