android - poner - Reemplace el diseño de la barra de herramientas de acuerdo con el fragmento mostrado
google toolbar chrome (1)
No estoy seguro de lo que intentas lograr, pero creo que, si es posible, deberías acercarte a esto dejando que los fragmentos personalicen tu barra de herramientas en lugar de reemplazarla. Puede permitir que sus fragmentos oculten / muestren vistas en la barra de herramientas según sus necesidades.
Añadir setHasOptionsMenu(true);
en los fragmentos OnCreateView()
y luego sobrescribir onOptionsMenuCreated()
Me gusta esto:
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true);
return inflater.inflate(R.layout.result_list, container, false);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.this_frag_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
Si necesita hacer cosas más específicas con la barra de herramientas, puede obtener la instancia usando
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
Tengo una actividad con el cajón de navegación que reemplaza el main_fragment_container en la actividad. Cuando se muestra uno de los fragmentos, quiero cambiar el diseño de la barra de herramientas y agregarle un girador (y eliminarlo cuando el fragmento esté oculto).
Mi diseño se ve así:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:sothree="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_parent_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:fitsSystemWindows="true">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
sothree:theme="@style/AppTheme.ActionBar" />
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Main layout -->
<FrameLayout
android:id="@+id/main_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- Nav drawer -->
<fragment
android:id="@+id/fragment_drawer"
android:name="com.idob.mysoccer.ui.DrawerFragment"
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="left|start" />
</android.support.v4.widget.DrawerLayout>