首页 > 解决方案 > 如何清除添加/删除操作栏的动画?

问题描述

在我的应用程序中,我使用容器来更改几个片段。在某些片段中,我必须在父活动中隐藏操作栏。我设法做到了,但是隐藏和查看工具栏的过程受到奇怪和不舒服的动画的支持。我通过以下方式隐藏和显示工具栏:

Objects.requireNonNull(getSupportActionBar()).hide();

也许我可以清除动画?

标签: androidandroid-actionbar

解决方案


我设法用这种方法找到了解决我的问题的方法:

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

链接


推荐阅读