android - AppBarLayout 在 setVisibility(View.GONE) 后占用空间

标签 android android-coordinatorlayout android-collapsingtoolbarlayout android-appbarlayout

我想隐藏我的 AppBarLayout 以动态添加一个将占据屏幕高度的 View 。 为此,我想通过将 AppBarLayout 的可见性设置为 GONE 来临时删除 View 。 View 不可见,但在屏幕中占据空间(屏幕高度的一半)。

我的 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" />
</android.support.design.widget.CoordinatorLayout>

最佳答案

你的问题是这条线引起的

    app:layout_behavior="@string/appbar_scrolling_view_behavior"

您必须在 CoordinatorLayout 上以编程方式设置它,而不是在具有该字段的实际容器 fragment 上设置它。

方法是这样的

    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());

关于android - AppBarLayout 在 setVisibility(View.GONE) 后占用空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32704775/

相关文章:

android - 当您尝试打开 URL 时,阿里巴巴 android 应用程序会导致崩溃

android - AppBarLayout child 的奇怪行为

android - 替换包含布局

android - WebView 不会在带有 CollapsibleToolBarLayout 的 NestedScrollView 中滚动

android - 使用稀松布或颜色叠加更改 CollapsingToolbarLayout 中标题的背景颜色

java - 无法使用 CollapsedToolBarLayout 中的 NestedScrollView 在 ViewPager 中完全向下滚动

android - 适用于 Raspberry Pi 3 的 Android Things 上的 UART 外设

java - Android 带指针的圆形图像

java - 调用soap webservice时出现异常

java - 协调器布局 : View disappears with custom behavior