AppBarLayout занять место после setVisibility (вид.УШЕДШИЙ)


Я хочу скрыть свой AppBarLayout для динамического добавления вида, который будет занимать высоту экрана. Для этого я хочу удалить представление временно, установив видимость моего AppBarLayout в GONE. Вид не виден, но занимает место на экране(половина высоты экрана).

Мой 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:id="@+id/coordinatorFriendProfil"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#81D4FA"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
    android:id="@+id/fProfilAppBar"
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:fitsSystemWindows="true">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/fProfilCollapsing"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#B3E5FC"
        android:gravity="center"
        android:orientation="vertical"
        app:contentScrim="#03A9F4"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <LinearLayout
            android:id="@+id/fProfilUserInfo"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:orientation="vertical">

            <com.neden.neden.RoundedImageView
                android:id="@+id/ivFriendPicture"
                android:layout_width="150sp"
                android:layout_height="150sp"
                android:layout_gravity="center"
                android:fitsSystemWindows="true"
                android:src="@drawable/photo"
                app:border_color="#64B5F6"
                app:border_width="4dp"
                app:layout_collapseMode="parallax"
                app:layout_collapseParallaxMultiplier="0.7" />

            <TextView
                android:id="@+id/fProfilName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:textSize="15pt" />

        </LinearLayout>

        <android.support.v7.widget.Toolbar
            android:id="@+id/fProfilToolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin"
            app:layout_scrollFlags="scroll|enterAlways" />

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

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

<FrameLayout
    android:id="@+id/fProfilContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

Я хочу добавить изображение для демонстрации проблемы, но не могу из-за моей репутации. Извините за очень плохой английский, я не очень хорошо говорю.

2 6

2 ответа:

Ваша проблема вызвана этой строкой

    app:layout_behavior="@string/appbar_scrolling_view_behavior"

Вы должны будете установить его программно на CoordinatorLayout не фактический фрагмент контейнера, который имеет это поле.

Вот как

    mContainer = (FrameLayout) findViewById(R.id.main_content_container);

    CoordinatorLayout.LayoutParams params =
            (CoordinatorLayout.LayoutParams) mContainer.getLayoutParams();
    params.setBehavior(null);

    mContainer.requestLayout();

Если вы хотите сделать его прокрутку снова

   params.setBehavior(new AppBarLayout.ScrollingViewBehavior());

Попробуйте установить высоту AppBarLayout в ноль

AppBarLayout appBar=(AppBarLayout)findViewById(R.id.fProfilAppBar);
LinearLayout.LayoutParams params=appBar.getLayoutParams();
params.height=0;
appBar.setLayoutParams(params);