我使用Activity类(通常)一个片段作为内容.在Activity中,我使用CollapsingToolbarLayout作为某种信息的某种标题,一切正常.但在某些情况下(当附加一些片段时)我不想显示该信息,我不希望在滚动时打开CollapsingToolbarLayout.
我想要实现的是锁定CollapsingToolbarLayout,防止它从片段打开.我用appBarLayout.setExpanded(false,true)以编程方式折叠它;
解决方法
我想出了一个不同的方法,因为设置嵌套滚动标志仅在拖动NestedScrollView时有效.仍然可以通过滑动栏本身来扩展appbar.
我将其设置为“Utils”类中的静态函数.显然,您在解锁时设置的标志将取决于哪些与您的用例相关.
此函数假定您从扩展工具栏开始
public static void LockToolbar(boolean locked,final AppBarLayout appbar,final CollapsingToolbarLayout toolbar) { if (locked) { // We want to lock so add the listener and collapse the toolbar appbar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout,int verticalOffset) { if (toolbar.getHeight() + verticalOffset < 2 * ViewCompat.getMinimumHeight(toolbar)) { // Now fully expanded again so remove the listener appbar.removeOnOffsetChangedListener(this); } else { // Fully collapsed so set the flags to lock the toolbar AppBarLayout.LayoutParams lp = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); lp.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS_COLLAPSED); } } }); appbar.setExpanded(false,true); } else { // Unlock by restoring the flags and then expand AppBarLayout.LayoutParams lp = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); lp.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED); appbar.setExpanded(true,true); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。