gpt4 book ai didi

android float Action 按钮显示()不工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:45 24 4
gpt4 key购买 nike

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

更新

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

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

并且出现同样的问题(fab 未显示)。有什么处理这个的想法吗?

最佳答案

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


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

因此,如果您调用 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);
}

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

关于android float Action 按钮显示()不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33981322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com