更新: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);
}
。アニメーションが終わったら、私たちが実際になりたい状態にあるかどうかをチェックし、そうでなければ正しいものに変更します。サポートライブラリ24.2.0で修正された
なんてこった!それだった! postDelayedを使って私を夢中にさせてくれましたが、ライブラリを更新することはやりました。ありがとうございます! – rupps