7

Ho una singola app Android per attività con molti frammenti. Quando visualizzo una schermata di elenco, desidero utilizzare lo Toolbar con la proprietà, app:layout_scrollFlags="scroll|enterAlways". E nei frammenti di dettaglio voglio usare lo CollapsingToolbarLayout con un'immagine al suo interno. Poiché si tratta di una singola app di attività, ne ho solo uno Toolbar. È possibile modificare il layout in modo programmatico per soddisfare entrambi i casi?Modifica barra degli strumenti e CollapsingToolbarLayout per scorrere i flag a livello di programmazione

risposta

9

Sì. Diciamo che stai andando dal frammento CollapsingToolbarLayout alla barra degli strumenti.

  1. si comprime il vostro AppBarLayout utilizzando AppBarLayout.setExpanded(false);

  2. È possibile modificare i flag di scorrimento in base alle proprie esigenze.

    AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); 
    p.setScrollFlags(...); 
    toolbar.setLayoutParams(p); 
    

    Lo stesso vale per il CollapsingToolbarLayout se necessario. Credo che dovrebbe essere qualcosa di simile:

    collapsingToolbarParams.setScrollFlags(0); //no flags for ctl 
    toolbarParams.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS); //new flags for toolbar 
    
+0

Ho anche avuto questo problema. Sembra che ho dimenticato di chiamare il metodo 'setLayoutParams()'. Grazie per la risposta! – Mauker

+1

setScrollFlags (0) funziona bene ma quando provo a impostarlo su questo: params.setScrollFlags (AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS | AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP); // cancella tutti i flag di scorrimento toolbar.setLayoutParams (parametri); non funziona .. – iBobb