Подтвердить что ты не робот

Как отключить CollapsingToolbar, когда прокрутка не имеет содержимого?

Я использую конструкцию поддержки 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), но это не имеет никакого эффекта. как я могу удалить высоту из моей панели приложений?

4b9b3361

Ответ 1

получить ссылку на appbarlayout и установить setScrollFlags.

AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
p.setScrollFlags(0);
toolbar.setLayoutParams(p);

Ответ 3

Чтобы остановить сбой collapsingtoolbar, не предоставляйте

app:layout_scrollFlags="scroll|exitUntilCollapsed" в файле XML. Вы можете удалить этот код

Ответ 4

Посредством слова "свиток в нем нет содержимого", я полагаю, что вы имеете в виду "нет фрагмента". Для этого, я думаю, вам придется сначала изменить <fragment> на <FrameLayout>, а затем добавить фрагмент программно с помощью getFragmentManager().beginTransaction(), а затем проверить, присутствует ли фрагмент (то есть не null):

    if (getFragmentManager().findFragmentById(R.id.fragment_name) != null) { 
           // here try RKNP code to disable the appBar from collapsing 
    }