【问题标题】:android floating action button show() not workingandroid浮动操作按钮显示()不起作用
【发布时间】:2016-03-03 01:39:10
【问题描述】:

我有一个浮动操作按钮 (FAB) 和一个异步任务,它在后台加载一些数据之前调用 FAB.hide(),并在完成后调用 FAB.show()。出于某种原因,即使我的控制台日志清楚地显示始终调用 hide() 然后 show(),有时 FAB 隐藏但直到任务再次执行才显示。

更新

如果呼叫距离太近,问题似乎就会发生。我实际上尝试了代码:

fab.hide();
fab.show();

同样的问题发生了(fab 没有显示)。 有什么处理这个问题的想法吗?

【问题讨论】:

    标签: android floating-action-button


    【解决方案1】:

    【讨论】:

    • 啊!!!就是这样!在这里和那里使用 postDelayed 让我发疯,但更新库就可以了。谢谢先生!
    【解决方案2】:

    更新:作为noted on the Issue Tracker,此问题已在支持库的 24.2.0 版中得到修复。


    我遇到了类似的情况。问题似乎是浮动操作按钮在其显示/隐藏动画完成之前不会认为自己显示或隐藏。

    因此,如果您调用hide();,但在隐藏动画完成之前调用show();,则显示动画将不会运行,因为按钮仍设置为已显示状态。

    我不知道这是否是最佳解决方案,但我解决了如下:

    boolean fabShouldBeShown;
    FloatingActionButton.OnVisibilityChangedListener fabListener = new FloatingActionButton.OnVisibilityChangedListener() {
        @Override
        public void onShown(FloatingActionButton fab) {
            super.onShown(fab);
            if(!fabShouldBeShown){
                fab.hide();
            }
        }
    
        @Override
        public void onHidden(FloatingActionButton fab) {
            super.onHidden(fab);
            if(fabShouldBeShown){
                fab.show();
            }
        }
    };
    
    public void methodWhereFabIsHidden() {
        fabShouldBeShown = false;
        myFab.hide(fabListener);
    }
    
    public void methodWhereFabIsShown() {
        fabShouldBeShown = true;
        myFab.show(fabListener);
    }
    

    通过设置我们自己的布尔值和这个监听器,我们可以处理这些中断的情况。当我们到达动画的结尾时,我们检查我们是否处于我们真正想要的状态,如果不是,我们改变到正确的状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 2019-09-04
      • 1970-01-01
      • 2018-01-01
      相关资源
      最近更新 更多