答案 0 :(得分:91)
如果您的工具栏位于AppBarLayout内,该AppBarLayout可能位于您的CoordinatorLayout内,则此类内容应该有效。
AppBarLayout appBarLayout = (AppBarLayout)findViewById(R.id.appBar);
appBarLayout.setExpanded(true, true);
或者将其折叠
AppBarLayout appBarLayout = (AppBarLayout)findViewById(R.id.appBar);
appBarLayout.setExpanded(false, true);
这是定义
setExpanded(boolean expanded, boolean animate)
请注意,此方法可从支持库的第23版获得,此处有一些documentation供参考,需要注意的关键是" 与AppBarLayout的滚动一样,此方法依赖于此布局是CoordinatorLayout的直接子项。"希望这有帮助!
答案 1 :(得分:10)
这就是您要找的东西吗?
Toolbar toolbar = findViewById(R.id.toolbar); // or however you need to do it for your code
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(0); // clear all scroll flags
link:How to enable/disable toolbar scrolling programmatically when using design support library
为了隐藏工具栏,您可以执行以下操作:
toolbar.animate().translationY(-toolbar.getBottom()).setInterpolator(new AccelerateInterpolator()).start();
如果您想再次展示,请致电:
toolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator()).start();
答案 2 :(得分:0)
我的问题与@Artem非常相似我试过很多修复,但没有一个对我有效。使用AppBarLayout
时,@ Jraco11的答案是正确的。 @ johnrao07不适合我。但是当我们使用Toolbar
时,我找到了解决此问题的完美解决方案。
以编程方式隐藏工具栏
if (toolbar.getParent() instanceof AppBarLayout){
((AppBarLayout)toolbar.getParent()).setExpanded(false,true);
}
以编程方式显示工具栏
if (toolbar.getParent() instanceof AppBarLayout){
((AppBarLayout)toolbar.getParent()).setExpanded(true,true);
参考原始答案(@Android HHT答案): - programmatically-show-toolbar-after-hidden-by-scrolling-android-design-library