使用协调器布局以编程方式隐藏工具栏

时间:2016-01-07 09:03:17

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

经过广泛搜索后,似乎没有人对同样的行为感兴趣。如果我错过了,请指出适当的地方。

问题如下: 我在主活动xml中有一个协调器布局。在协调器布局内部有一个视图寻呼机。在我放入视图分页器的三个片段中的两个片段中,有一些循环视图触发了协调器布局中工具栏的隐藏。但是第三个片段没有循环视图。问题在于,当显示工具栏时,第三个片段被绘制得比它应该低,将ui的一部分隐藏在屏幕的下边缘下方。如果隐藏工具栏,则所有内容都会正常显示

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

如果您认为有更好的方法 - 我也很高兴听到这个消息。谢谢!

1 个答案:

答案 0 :(得分:5)

回答你的问题:

我认为您的Toolbar已包含在AppBarLayout中。 要实现这一目标,您可以在ViewPager.OnPageChangeListenerViewPager上的onPageSelected()回拨电话setExpanded()中为AppBarLayout添加 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

替代方法:

另一种方法,不会说更好,我会让你根据你的内容和用户交互来判断,可以对你的非回收片段保持相同的滚动效果。 您可以通过将片段内容包装在Behaviour(包含在support-v4中)中,并使用相应的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> 中的<{1}},从而轻松实现这一点。

CoordinatorLayout

关于滚动,标签和Tensor("DecodeJpeg:0", shape=TensorShape([Dimension(None), Dimension(None), Dimension(None)]), dtype=uint8)https://mzgreen.github.io/2015/06/23/How-to-hideshow-Toolbar-when-list-is-scrolling(part3)/

的精彩博文