当滚动没有内容时如何禁用 CollapsingToolbar 的折叠?
How to disable CollapsingToolbar's collapse when scroll has not content?
我正在使用 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>
更新问题:
我已完成禁用和启用视图的折叠。我使用这行代码来禁用折叠:
AppBarLayout.LayoutParams appbarParams = (AppBarLayout.LayoutParams) collapsingToolbar.getLayoutParams();
appbarParams.setScrollFlags(0);
collapsingToolbar.setLayoutParams(p);
问题是 appbar 强制将 scrollflags 的高度设置为 0。我尝试使用 appbar.setElevation(0) 但它没有效果。如何从我的应用栏中删除高度?
获取您的 appbarlayout 参考并设置 setScrollFlags。
AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
p.setScrollFlags(0);
toolbar.setLayoutParams(p);
"scroll has no content in it",我认为你的意思是 "there is no fragment"。为此,我认为您必须首先将 <fragment>
更改为 <FrameLayout>
,然后使用 getFragmentManager().beginTransaction()
以编程方式添加片段,然后检查片段是否存在(即不为空) 像这样:
if (getFragmentManager().findFragmentById(R.id.fragment_name) != null) {
// here try RKNP's code to disable the appBar from collapsing
}
要停止折叠工具栏的折叠,请不要给出
app:layout_scrollFlags="scroll|exitUntilCollapsed"
在 XML 文件中..您可以删除该代码
尝试 appbarParams.setScrollFlags(-1);
和 appBarLayout.setExpanded(true, true)
删除高度。
如果片段中有 recyclerView,请尝试 recyclerView.setNestedScrollingEnabled(false);
我正在使用 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>
更新问题:
我已完成禁用和启用视图的折叠。我使用这行代码来禁用折叠:
AppBarLayout.LayoutParams appbarParams = (AppBarLayout.LayoutParams) collapsingToolbar.getLayoutParams();
appbarParams.setScrollFlags(0);
collapsingToolbar.setLayoutParams(p);
问题是 appbar 强制将 scrollflags 的高度设置为 0。我尝试使用 appbar.setElevation(0) 但它没有效果。如何从我的应用栏中删除高度?
获取您的 appbarlayout 参考并设置 setScrollFlags。
AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
p.setScrollFlags(0);
toolbar.setLayoutParams(p);
"scroll has no content in it",我认为你的意思是 "there is no fragment"。为此,我认为您必须首先将 <fragment>
更改为 <FrameLayout>
,然后使用 getFragmentManager().beginTransaction()
以编程方式添加片段,然后检查片段是否存在(即不为空) 像这样:
if (getFragmentManager().findFragmentById(R.id.fragment_name) != null) {
// here try RKNP's code to disable the appBar from collapsing
}
要停止折叠工具栏的折叠,请不要给出
app:layout_scrollFlags="scroll|exitUntilCollapsed"
在 XML 文件中..您可以删除该代码
尝试 appbarParams.setScrollFlags(-1);
和 appBarLayout.setExpanded(true, true)
删除高度。
如果片段中有 recyclerView,请尝试 recyclerView.setNestedScrollingEnabled(false);