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

Hide android.support.v7.widget.Toolbar programmatically

在我的 activity 我做的是:

setSupportActionBar(toolbar);

其中工具栏是 android.support 的实例。v7.widget.Toolbar

在此之后是否有任何方法可以通过编程方式隐藏和显示工具栏小部件?我已经试过了

toolbar.setVisibility(View.INVISIBLE);

但这只会让它不可见,它仍然需要 space,所以 activity 的内容在它之后开始,我在 [=26] 中看到白色 space =].

INVISIBLE 仅隐藏视图。

GONE 但是,将隐藏视图并防止它占用任何 space。

toolbar.setVisibility(View.GONE);

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

setExpanded(boolean expanded, boolean animate)

此方法可从支持库的 v23 中获得。

来自documentation供参考。

As with AppBarLayout scrolling, this method relies on this layout being a direct child of a CoordinatorLayout.

expanded : true if the layout should be fully expanded, false if it should be fully collapsed

animate : Whether to animate to the new state

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

用动画展开工具栏。

appBarLayout.setExpanded(true, true);

用动画折叠工具栏。

appBarLayout.setExpanded(false, true);

这是我的代码试试这个。它非常适合我。

    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);
                            }
                });
    }

希望这对您有所帮助