with studio llamar fragments example desde android navigation-drawer android-5.0-lollipop appcompat android-toolbar

android - studio - La barra de herramientas de Appcompat no se muestra con el cajón de navegación



navigation drawer android studio 2018 (1)

Estoy tratando de configurar lo siguiente en mi aplicación:

  • Barra de herramientas (versión Appcompat v7)
  • Cajon de navegacion
  • Tema Pre- Lollipop Appcompat v7 Material

Seguí las instrucciones aquí: http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

Sin embargo, después de declarar .NoActionBar en el tema, así como poner la barra de herramientas en el diseño, mi barra de herramientas no se muestra . Lo que acabo de obtener es exactamente lo que cabría esperar al declarar que no hay barra de acción, no hay barra de acción. Aquí está el diseño:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <!-- Toolbar --> <include layout="@layout/toolbar"/> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/layout_main" android:layout_width="match_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Spinner android:id="@+id/spinner_main" android:visibility="gone" android:textAlignment="center" android:gravity="center" android:layout_gravity="center_horizontal" android:entries="@array/error_loading_content_array" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <FrameLayout android:id="@+id/container" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="0px"></FrameLayout> </LinearLayout> <fragment android:id="@+id/navigation_drawer" android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent" android:layout_gravity="start" android:name=".NavigationDrawerFragment" tools:layout="@layout/fragment_navigation_drawer"/>

Toolbar.xml:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" android:layout_width="fill_parent" android:layout_height="wrap_content"/>

En MainActivity.java:

// Load view/layout setContentView(R.layout.guidelib_activity_main); // TODO: Toolbar not showing mToolbar = (Toolbar)findViewById(R.id.toolbar); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true);

Solución

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/linearlayout_root_main" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:id="@+id/layout_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- Toolbar --> <!-- Moved up to new LinearLayout root tag --> <!--<include layout="@layout/toolbar"/>--> ...


DrawerLayout extiende FrameLayout, pero lo estás tratando como un LinearLayout. Puede envolver su etiqueta y el siguiente LinearLayout en otro LinearLayout, o puede mover su etiqueta.

Además, "fill_parent" está en desuso y se asigna a "match_parent", por lo que solo debes usar este último. También puede eliminar los atributos xmlns adicionales en su elemento LinearLayout.

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:id="@+id/layout_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- Toolbar --> <include layout="@layout/toolbar"/> ...

Su diseño original no funcionó porque la barra de herramientas estaba oculta (ordenada por z) detrás de LinearLayout.