android 浮动操作按钮 show() 不工作
android floating action button show() not working
我有一个浮动操作按钮 (FAB) 和一个异步任务,它在后台加载一些数据之前调用 FAB.hide(),在完成后调用 FAB.show()。出于某种原因,即使我的控制台日志清楚地显示总是先调用 hide() 然后再调用 show(),但有时 FAB 会隐藏但不会显示,直到任务再次执行。
更新
如果通话距离太近,似乎会出现问题。我实际上尝试了代码:
fab.hide();
fab.show();
并且出现了同样的问题(fab 未显示)。
有什么处理这个的想法吗?
更新:作为 noted on the Issue Tracker,此问题已在支持库的版本 24.2.0 中得到修复。
我遇到过类似的情况。问题似乎是浮动操作按钮在 show/hide 动画 完成 .
之前不会认为自己显示或隐藏
因此,如果您调用 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);
}
通过设置我们自己的布尔值和这个监听器,我们可以处理这些中断的情况。当我们到达动画的结尾时,我们检查我们是否处于我们真正想要的状态,如果不是,我们改变到正确的状态。
已在支持库 24.2.0 中修复:
我有一个浮动操作按钮 (FAB) 和一个异步任务,它在后台加载一些数据之前调用 FAB.hide(),在完成后调用 FAB.show()。出于某种原因,即使我的控制台日志清楚地显示总是先调用 hide() 然后再调用 show(),但有时 FAB 会隐藏但不会显示,直到任务再次执行。
更新
如果通话距离太近,似乎会出现问题。我实际上尝试了代码:
fab.hide();
fab.show();
并且出现了同样的问题(fab 未显示)。 有什么处理这个的想法吗?
更新:作为 noted on the Issue Tracker,此问题已在支持库的版本 24.2.0 中得到修复。
我遇到过类似的情况。问题似乎是浮动操作按钮在 show/hide 动画 完成 .
之前不会认为自己显示或隐藏因此,如果您调用 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);
}
通过设置我们自己的布尔值和这个监听器,我们可以处理这些中断的情况。当我们到达动画的结尾时,我们检查我们是否处于我们真正想要的状态,如果不是,我们改变到正确的状态。
已在支持库 24.2.0 中修复: