14

我看过这个问题:

更改 ActionBar 隐藏动画?

但它并没有说明是否可以完全禁用动画。

4

3 回答 3

26

你现在可以这样做,

getSupportActionBar().setShowHideAnimationEnabled(false);
于 2016-07-07T22:10:09.107 回答
14

我使用以下方法修复:

public static void disableShowHideAnimation(ActionBar actionBar) {
    try
    {
        actionBar.getClass().getDeclaredMethod("setShowHideAnimationEnabled", boolean.class).invoke(actionBar, false);
    }
    catch (Exception exception)
    {
        try {
            Field mActionBarField = actionBar.getClass().getSuperclass().getDeclaredField("mActionBar");
            mActionBarField.setAccessible(true);
            Object icsActionBar = mActionBarField.get(actionBar);
            Field mShowHideAnimationEnabledField = icsActionBar.getClass().getDeclaredField("mShowHideAnimationEnabled");
            mShowHideAnimationEnabledField.setAccessible(true);
            mShowHideAnimationEnabledField.set(icsActionBar,false);
            Field mCurrentShowAnimField = icsActionBar.getClass().getDeclaredField("mCurrentShowAnim");
            mCurrentShowAnimField.setAccessible(true);
            mCurrentShowAnimField.set(icsActionBar,null);
        }catch (Exception e){
            //....
        }
    }
}
于 2014-07-14T15:12:25.710 回答
4

如果你使用 ActionBarSherlock 那么你就可以做到。参见 ActionBarImpl 类,它有 setShowHideAnimationEnabled(boolean enabled) 方法。

于 2013-08-25T18:26:26.983 回答