在我的代码中,我只有一个活动和许多片段。 结构是这样的:
<android.support.v4.widget.DrawerLayout>
<android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.AppBarLayout>
<android.support.design.widget.CollapsingToolbarLayout>
<ImageView/>
<android.support.v7.widget.Toolbar/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<FrameLayout/>
<android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView/>
</android.support.v4.widget.DrawerLayout>
和
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:design:23.1.0'
我不需要在所有片段中使用折叠工具栏,但我更喜欢这样做,而不是在每个片段中放置appbarlayout。
问题出在我启动应用程序时:
1)我在一个片段,其中折叠工具栏没有用(我没有滚动内容)但是如果我在工具栏上滚动,我仍然可以展开折叠工具栏(这是问题... )。
2)现在,我进入一个带有滚动内容的片段,然后使用recyclerview展开折叠工具栏,折叠工具栏正常工作。
3)我想重复1)的错误,错误不再存在。 像使用recyclerview滚动一样解决了这个问题? 如果我在工具栏上滚动,折叠工具栏不会展开。我希望它能够像应用程序的推出一样。 我没有赢得片段滚动内容以禁用此错误。
你可以看到这个gif代表我所说的via GIPHY
你能帮帮我吗? :)
答案 0 :(得分:0)
如果要更改滚动行为,可以通过更改CollapsingToolbarLayout的AppBarLayout.LayoutParams上的Scroll Flags以编程方式执行此操作。
CollapsingToolbarLayout ctl= (CollapsingToolbarLayout) findViewById(R.id.collapsing_appbar);
AppBarLayout.LayoutParams params = ctl.getLayoutParams();
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);//or a combination of flags
ctl.setLayoutParams(params);
使CollapsingToolbarLayout滚动'而没有滚动内容'的另一个技巧是放置 在NestedScrollView中'你的布局'并设置一个* 1000dp最小高度值 到NestedScrollView的孩子('你的布局')。
android:minHeight="1000dp"
布局:
<android.support.v4.widget.NestedScrollView
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<!--your layout-->
<FrameLayout android:minHeight="1000dp"/>
</android.support.v4.widget.NestedScrollView>
* SupportDesignDemos示例:https://github.com/android/platform_development/blob/master/samples/SupportDesignDemos/res/layout/include_appbar_scrollview.xml