以编程方式隐藏android.support.v7.widget.Toolbar

时间:2015-01-10 21:04:10

标签: android android-activity android-toolbar

在我的活动中,我做了:

setSupportActionBar(toolbar);

其中toolbar是android.support.v7.widget.Toolbar的实例

之后有什么方法可以隐藏并以编程方式显示工具栏小部件吗?我已经尝试了

toolbar.setVisibility(View.INVISIBLE);

但是这只会让它看不见而且它仍然需要空间,所以活动的内容在它之后开始,我在标题中看到了空格。

3 个答案:

答案 0 :(得分:21)

INVISIBLE仅隐藏视图。

然而,

GONE会隐藏视图并阻止它占用任何空间。

toolbar.setVisibility(View.GONE);

答案 1 :(得分:6)

如果您的工具栏在AppBarLayout中,那么您可以使用AppBarLayout的 setExpanded 方法展开和折叠带或不带动画的工具栏。

setExpanded(boolean expanded, boolean animate)

此方法可从支持库的v23开始。

documentation开始参考。

  

与AppBarLayout滚动一样,此方法依赖于此布局是CoordinatorLayout的直接子项。

     

展开: true 如果布局应该完全展开, false 如果它应该完全展开

     

animate:是否动画到新状态

AppBarLayout appBarLayout = (AppBarLayout)findViewById(R.id.appBar);

使用动画展开工具栏。

appBarLayout.setExpanded(true, true);

用动画折叠工具栏。

appBarLayout.setExpanded(false, true);

答案 2 :(得分:0)

这是我的代码试试这个。它对我来说很完美。

    private static final float APPBAR_ELEVATION = 14f;

    private void hideAppBar(final AppBarLayout appBar) {
                appBar.animate().translationY(-appBar.getHeight()).setInterpolator(new LinearInterpolator()).setDuration(500);

    }
    public void showAppBar(final AppBarLayout appBar){
                appBar.animate().translationY(0).setInterpolator(new LinearInterpolator()).setDuration(500).setListener(new AnimatorListenerAdapter() {
                            @Override
                            public void onAnimationEnd(Animator animation) {
                                appBar.setElevation(APPBAR_ELEVATION);
                            }
                });
    }

希望这可以帮到你