有没有一种方法来禁用ActionBar的显示/隐藏动画?(Is there a way to dis

2019-07-20 15:21发布

我已经看到了这个问题:

改变动作条隐藏动画?

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

Answer 1:

现在你可以做到这一点,

        getSupportActionBar().setShowHideAnimationEnabled(false);


Answer 2:

我固定使用下面的方法:

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){
            //....
        }
    }
}


Answer 3:

如果你使用ActionBarSherlock,那么你可以做到这一点。 见ActionBarImpl类,它已经setShowHideAnimationEnabled(布尔启用)方法。



文章来源: Is there a way to disable ActionBar's show/hide animation?