Ответ 1
получить ссылку на appbarlayout и установить setScrollFlags.
AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
p.setScrollFlags(0);
toolbar.setLayoutParams(p);
Я использую конструкцию поддержки Android "com.android.support:design:22.2.1". Моя проблема заключается в том, что, когда прокрутка не имеет в ней контента, сворачиваемая панель инструментов все же позволяет выполнить операцию краха. Мне нужно удалить свертывание представления, если в прокрутке нет содержимого.
Мой XML:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:background="@android:color/white"
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:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<fragment
android:id="@+id/pawfile_header"
android:name="com.lightbulb.pawesome.fragments.PawfileHeaderFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:fitsSystemWindows="true"
app:layout_collapseMode="parallax" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<fragment
android:id="@+id/pawfile_timeline"
android:name="com.lightbulb.pawesome.user_timeline.PawesomeUserTimelineFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
ВОПРОС UDPATE:
Я закончил с отключением и включением свертывания представления. Я использовал эту строку кода, чтобы отключить свертывание:
AppBarLayout.LayoutParams appbarParams = (AppBarLayout.LayoutParams) collapsingToolbar.getLayoutParams();
appbarParams.setScrollFlags(0);
collapsingToolbar.setLayoutParams(p);
Проблема заключается в том, что панель приложения является силой для того, чтобы высота флагов scrollflags равнялась 0. Я попытался использовать appbar.setElevation(0), но это не имеет никакого эффекта. как я могу удалить высоту из моей панели приложений?
получить ссылку на appbarlayout и установить setScrollFlags.
AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
p.setScrollFlags(0);
toolbar.setLayoutParams(p);
Попробуйте appbarParams.setScrollFlags(-1);
и appBarLayout.setExpanded(true, true)
удалить отметку.
И если у вас есть recyclerView в фрагменте, попробуйте recyclerView.setNestedScrollingEnabled(false);
Необходимо отключить расширение для CollapsingToolbarLayout для определенных фрагментов
Чтобы остановить сбой collapsingtoolbar, не предоставляйте
app:layout_scrollFlags="scroll|exitUntilCollapsed"
в файле XML. Вы можете удалить этот код
Посредством слова "свиток в нем нет содержимого", я полагаю, что вы имеете в виду "нет фрагмента". Для этого, я думаю, вам придется сначала изменить <fragment>
на <FrameLayout>
, а затем добавить фрагмент программно с помощью getFragmentManager().beginTransaction()
, а затем проверить, присутствует ли фрагмент (то есть не null):
if (getFragmentManager().findFragmentById(R.id.fragment_name) != null) {
// here try RKNP code to disable the appBar from collapsing
}