UPDATE: Wie noted on the Issue Tracker, dieses Problem wurde ab Version 24.2.0 der Support-Bibliothek behoben.
Ich stieß auf eine ähnliche Situation. Das Problem scheint darin zu bestehen, dass sich die Floating-Action-Schaltfläche nicht als ein- oder ausgeblendet darstellt, bis die Animation zum Ein-/Ausblenden fertig ist.
Wenn Sie also hide();
anrufen, aber dann show();
anrufen, bevor die ausgeblendete Animation beendet ist, wird die Show-Animation nicht ausgeführt, da die Schaltfläche immer noch so eingestellt ist, dass sie sich bereits in einem gezeigten Zustand befindet.
Ich weiß nicht, ob dies die optimale Lösung ist, aber ich gelöst es wie folgt:
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);
}
Durch unsere eigenen boolean Einstellung zusammen mit diesem Hörer wir mit diesen unterbrochen Situationen umgehen können. Wenn wir das Ende der Animation erreichen, prüfen wir, ob wir in dem Zustand sind, in dem wir eigentlich sein wollen, und wenn nicht, wechseln wir zum richtigen.
argh !!! Das war's !!! mich verrückt machen mit postDelayed hier und da, aber die Aktualisierung der Bibliothek hat den Trick. Danke, mein Herr! – rupps