13

Sto tentando di animare un android.support.design.widget.FloatingActionButton che è bloccato sul mio AppBarLayout. Posso impostarlo bene all'interno del layout xml e si presenta bene. Comunque sto facendo una transizione di elementi condivisa a questo layout e il FAB viene mostrato prima che la vista sia impostata. Ho cercato di impostare la visibilità su GONE e INVISIBLE ma sembrano essere ignorati se il layout_anchor è impostato nel layout xml. C'è un modo per aggirare questo?Imposta layout_anchor in fase di esecuzione su FloatingActionButton

Vorrei che l'attività venga caricata con la transizione dell'elemento condiviso e quindi si dissolva nel mio FAB. Non riesco a nascondere il FAB a carico. Potrei farlo senza usare il layout_anchor ma preferisco tenerlo se possibile.

risposta

29

Se si dispone di un FAB con l'attributo della app:layout_anchor, e si desidera impostare la visibilità si dovrebbe usare qualcosa di simile:

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); 
params.setAnchorId(View.NO_ID); 
fab.setLayoutParams(params); 
fab.setVisibility(View.GONE); 

Se si desidera impostare il app:layout_anchor dinamicamente è possibile utilizzare lo stesso codice :

CoordinatorLayout.LayoutParams p = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); 
p.setAnchorId(xxxx); 
fab.setLayoutParams(p); 
+0

Questo sembra molto promettente. Che ne dici di impostare il layout_anchorGravity in questo modo? – Bignadad

+0

Posso lasciare il layout_anchorGravity nel layout xml e impostare semplicemente l'id di ancoraggio come hai detto sopra. È fantastico! Grazie – Bignadad

+0

Questo funziona per impostare dinamicamente l'ancoraggio, ma non risolve il problema di transizione dell'elemento condiviso menzionato [in questa domanda] (https://stackoverflow.com/questions/31804170/android-shared-element-transition-trafined- due attività-fa-non-lavoro). L'impostazione dell'ancora è ciò che sembra bloccare l'animazione. Senza impostare alcuna ancora, le animazioni sembrano funzionare bene. –

Problemi correlati