【问题标题】:hide toolbar programmatically with coordinator layout使用协调器布局以编程方式隐藏工具栏
【发布时间】:2016-01-07 09:03:16
【问题描述】:

经过大量搜索,令人惊讶的是,没有人对相同的行为感兴趣。如果我错过了,请给我指出合适的地方。

问题如下: 我在主要活动 xml 中有一个协调器布局。在协调器布局内部有一个视图寻呼机。在我放入视图分页器的三个片段中的两个片段中,有回收视图触发了协调器布局中工具栏的隐藏。第三个片段虽然没有回收视图。问题是当显示工具栏时,第三个片段被绘制得低于应有的水平,将部分 ui 隐藏在屏幕底部边缘下方。如果工具栏被隐藏,一切都会正常显示。

所以问题是 - 如何以编程方式隐藏工具栏?例如当用户在视图分页器中滑动到第三个片段时?

如果您认为有更好的方法 - 我也很乐意听到。谢谢!

【问题讨论】:

  • 在片段 3 上调用 hide() 方法

标签: android android-layout android-viewpager android-toolbar android-coordinatorlayout


【解决方案1】:

回答你的问题:

我假设您的Toolbar 包含在AppBarLayout 中。 要实现它,您可以将ViewPager.OnPageChangeListener 添加到您的ViewPager,并在您的AppBarLayout 上的onPageSelected() 回调调用setExpanded()

 mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }
            @Override
            public void onPageSelected(int position) {
                if(position == 2) { //the position of your non-scrolling fragment
                    AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appbar);
                    appBarLayout.setExpanded(false, true); //Hide the toolbar.
                }
            }
            @Override
            public void onPageScrollStateChanged(int state) { }
        });

替代方法:

另一种方法,不会说更好,我会让你根据你的内容和用户交互来判断,可以是在你的非回收片段上保持相同的滚动效果。 您可以通过将片段内容包装在 NestedScrollView(包含在 support-v4 中)和相应的 Behaviour 来轻松实现这一点,这将触发工具栏在 CoordinatorLayout 中的隐藏:

<android.support.v4.widget.NestedScrollView  
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:fillViewport="true">

<!-- Your non-recycler view fragment layout -->

</android.support.v4.widget.NestedScrollView>

一篇关于滚动、标签和CoordinatorLayout 的精彩博文:https://mzgreen.github.io/2015/06/23/How-to-hideshow-Toolbar-when-list-is-scrolling(part3)/

【讨论】:

  • 谢谢! setExpanded 正是我想要的!不知何故,我没想到要浏览 AppBarLayout 文档,而是查看工具栏!谢谢!
  • 是的,我特别不想将我的第三个片段包装到滚动视图中,因为它不打算滚动。不过还是谢谢你的想法
猜你喜欢
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多