代码之家  ›  专栏  ›  技术社区  ›  Earwin delos Santos

当滚动没有内容时,如何禁用CollapsingToolbar的折叠?

  •  19
  • Earwin delos Santos  · 技术社区  · 10 年前

    我使用的是android support design“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);
    

    问题是appbar被强制将滚动标志的提升设置为0。我尝试使用appbar。setElevation(0),但它没有效果。如何从appbar中删除提升?

    4 回复  |  直到 10 年前
        1
  •  29
  •   rKrishna    10 年前

    获取appbarlayout引用并设置setScrollFlags。

    AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
    p.setScrollFlags(0);
    toolbar.setLayoutParams(p);
    
        2
  •  3
  •   Community Mohan Dere    9 年前

    尝试 appbarParams.setScrollFlags(-1); appBarLayout.setExpanded(true, true) 以删除高程。

    如果片段中有recyclerView,请尝试 recyclerView.setNestedScrollingEnabled(false);

    Need to disable expand on CollapsingToolbarLayout for certain fragments

        3
  •  -2
  •   Debarshi Banerjee    9 年前

    要停止折叠工具栏的折叠,请不要给出

    app:layout_scrollFlags="scroll|exitUntilCollapsed" 可以删除该代码

        4
  •  -3
  •   Aditya Naique    10 年前

    所谓“卷轴中没有内容”,我认为你的意思是“没有片段”。为此,我想你必须首先改变 <fragment> <FrameLayout> ,然后使用 getFragmentManager().beginTransaction() ,然后检查片段是否存在(即不为空),如下所示:

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