这是隐藏我的 ActionBar 的好方法吗?

Is this a good way to hide my ActionBar?

我想在 2 秒后以编程方式在 Android 中隐藏我的操作栏。

如果用户点击屏幕顶部,操作栏可以再次显示。

我环顾四周,发现了多种使用不同主题隐藏操作栏的方法。

然而,我的方法是这样的:

private void hideActionBar(){
    if(getSupportActionBar().isShowing()){
        getSupportActionBar().hide();
    } else {
        getSupportActionBar().show();
    }
}

因此,有一个动画会随着整个屏幕拉起操作栏。

这应该像那样工作吗?

您可以像这样尝试禁用隐藏动画:

try
{
  getSupportActionBar().getClass().getDeclaredMethod("setShowHideAnimationEnabled", boolean.class).invoke(getSupportActionBar(), false);
}
catch (Exception exception)
{
  // The animation will still be displayed if an exception was thrown.
}

遗憾的是,没有简单的方法来禁用动画,因为它在实现中是硬编码的。

当我需要隐藏工具栏时,我将其视为另一个视图:

public void setToolbarVisible(boolean visible) {
    mToolbar.setVisibility(visible
        ? View.VISIBLE
        : View.GONE);
}

而且这个没有动画。否则你的代码完全没问题。

编辑:确保您的 ActionBar 的父布局中没有 android:animateLayoutChanges="true",因为这更有可能是动画问题的根源。