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

Android 这是隐藏我的ActionBar的好方法吗?,android,android-actionbar,Android,Android Actionbar,我想在过了2秒钟后,通过编程在Android中隐藏我的操作栏 如果用户点击屏幕顶部,操作栏会再次显示 我环顾四周,找到了各种方法来隐藏使用不同主题的动作栏 但是,我的方法是这样的: private void hideActionBar(){ if(getSupportActionBar().isShowing()){ getSupportActionBar().hide(); } else { getSupportActionBar().show(

我想在过了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.
}
因此,会有一个动画沿着整个屏幕向上拉动动作栏


这应该是这样工作的吗?

您可以尝试如下方式禁用隐藏动画:

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”,因为这很可能是动画问题的根源