AGGIORNAMENTO: come noted on the Issue Tracker, questo problema è stato risolto dalla versione 24.2.0 della libreria di supporto.
Mi sono imbattuto in una situazione simile. Il problema sembra essere che il pulsante di azione fluttuante non si considera mostrato o nascosto fino a quando l'animazione Mostra/Nascondi non è terminata.
Quindi se si chiama hide();
ma si chiama show();
prima che l'animazione nasconda sia terminata, l'animazione dello spettacolo non verrà eseguita perché il pulsante è ancora impostato come già in uno stato visualizzato.
Non so se questa è la soluzione ottimale, ma ho risolto come segue:
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);
}
Impostando la nostra booleana insieme a questo ascoltatore possiamo affrontare queste situazioni interrotti. Quando arriviamo alla fine dell'animazione, controlliamo se siamo nello stato che in realtà vogliamo essere, e in caso contrario passiamo a quello corretto.
fonte
2016-01-28 19:14:42
Argh !!! era così !!! facendomi impazzire usando PostDelayed qui e là ma l'aggiornamento della biblioteca ha fatto il trucco. grazie Signore! – rupps