Con la nueva biblioteca de diseño, hay varios diseños nuevos que cambian mucho el comportamiento de la barra de herramientas si el desarrollador así lo desea. Dado que los diferentes fragmentos tienen diferentes comportamientos y objetivos, por ejemplo, un fragmento de galería con una barra de herramientas que se colapsa que muestra una foto importante, o un fragmento sin una vista de desplazamiento que simplemente no necesita el diseño de la barra de aplicaciones para ocultar la barra de herramientas, tener una sola barra de herramientas en la actividad puede resultar difícil.
Entonces, con esto, ¿debería mover la barra de herramientas a cada fragmento? Si es así, tengo que configurar supportActionBar cada vez que muestro un fragmento y también tengo una referencia de la actividad en el fragmento que anula la naturaleza independiente de los fragmentos. Si dejo la barra de herramientas en la Actividad sola, tengo que tener varios diseños definidos para cada tipo de comportamiento en cada fragmento. ¿Cuál sería el mejor enfoque?
fuente
Respuestas:
En cuanto a mí, suena demasiado extraño tener una barra de aplicaciones y una barra de herramientas en cada fragmento. Así que elegí tener una barra de aplicaciones única con la barra de herramientas en actividad.
Para resolver ese problema con CoordinatorLayout, tendrá que establecer un comportamiento diferente de su
FrameLayout
(o cualquier otro diseño) que se supone que contiene fragmentos de cada fragmento que desea anular el comportamiento predeterminado.Supongamos que su comportamiento predeterminado es
app:layout_behavior="@string/appbar_scrolling_view_behavior"
Luego, en su fragment_activity_layout.xml, puede tener algo como eso:
Y en cada fragmento que desea no aplicar
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tendrá que anularonAttach
yonDetach
métodos que van a cambiar el comportamiento de suFrameLayout
:Después de eso, CoordinatorLayout no colapsará la barra de aplicaciones, etc. y permitirá que los diseños de los fragmentos sean de altura completa.
fuente
onLoadFinished
, es posible que me gusta mostrar una imagen centrada notificando que no hay nada aquí, como en la aplicación Inbox), pero aún no lo intenté. Quizás hoy más tarde.enableCoordinator(Activity activity)
/disableCoordinator(Activity activity)
desde fragmentos.Esta es mi solucion
fuente
Esta es una muy buena pregunta: ¿deberían mantenerse en una o en una
Toolbar
s esa necesidad de actuar como una ? Habiendo buscado diferentes preguntas y documentación, no pude encontrar una solución que cubriera todos los casos. Por lo tanto, realmente depende de su situación qué camino tomar.ActionBar
Activity
Fragment
Caso 1: la barra de herramientas debe ser un reemplazo de ActionBar
Si la barra de herramientas tiene que comportarse como una barra de acción normal (o si se muestra un máximo de 1 fragmento de vez en cuando), creo que la forma mejor / más sencilla es usar tradicional
Activities
con su propia barra de herramientas y poner su fragmento allí. De esta forma, no tiene que preocuparse de cuándo debe mostrarse qué barra de herramientas.También es posible cambiar el ActionBar (-behaviour) de Fragments, pero no lo recomendaría, ya que eso te obliga a realizar un seguimiento de qué Fragment cambió el ActionBar cuando. Ni siquiera sé si la configuración de ActionBar se puede hacer varias veces.
Caso 2: cada fragmento debe tener su propia barra de herramientas (parte de ella)
También puede optar por colocar diferentes barras de herramientas independientes en diferentes fragmentos, con sus propias acciones. De esta manera, podría mostrar diferentes Fragmentos uno al lado del otro, cada uno con sus propias acciones en su barra de herramientas, y sugerir que sea una barra de herramientas (tal vez como la aplicación Gmail, aunque no estoy seguro). Sin embargo, esto significa que tendría que inflar esas barras de herramientas usted mismo, pero no debe ser muy difícil.
Espero que esto ayude a tomar una decisión.
(Lo siento si cometí algún error de (idioma))
fuente