android浮动动作按钮show()不起作用

前端之家收集整理的这篇文章主要介绍了android浮动动作按钮show()不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个浮动操作按钮(FAB)和一个异步任务,在后台加载一些数据之前调用FAB.hide(),完成后调用FAB.show().出于某种原因,即使我的控制台日志清楚地显示一直在调用hide()然后show(),有时FAB会隐藏但在任务再次执行之前不会显示.

UPDATE

如果电话太近,问题似乎就会发生.我实际上尝试了代码

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

并且出现同样的问题(fab没有显示).
处理这个的任何想法?

解决方法

更新:作为 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);
}

通过设置我们自己的布尔值以及这个监听器,我们可以处理这些中断的情况.当我们到达动画结束时,我们检查我们是否处于我们实际想要的状态,如果不是,我们将更改为正确的状态.

原文链接:https://www.f2er.com/android/313890.html

猜你在找的Android相关文章