youtubers tesis sobre sirve resumida que para investigaciones investigacion historia caracteristicas android android-activity navigation navigation-drawer drawer

android - tesis - Mismo cajón de navegación en diferentes actividades



tesis sobre youtube pdf (11)

Con la respuesta de @Kevin van Mierlo, también puede implementar varios cajones. Por ejemplo, el menú predeterminado se encuentra en el lado izquierdo (inicio) y otro menú opcional, ubicado en el lado derecho, que solo se muestra cuando se cargan determinados fragmentos.

Pude hacer eso.

Hice un cajón de navegación que funciona como se muestra en el tutorial en el sitio web developer.android.com . Pero ahora, quiero usar un Cajón de navegación, lo creé en NavigationDrawer.class para múltiples actividades en mi aplicación.

Mi pregunta es, si alguien aquí puede hacer un pequeño tutorial, que explica cómo usar un cajón de navegación para múltiples actividades.

Lo leí primero en este Contestador Android Navigation Drawer en múltiples actividades

pero no funcionó en mi proyecto

public class NavigationDrawer extends Activity { public DrawerLayout drawerLayout; public ListView drawerList; private ActionBarDrawerToggle drawerToggle; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); drawerToggle = new ActionBarDrawerToggle((Activity) this, drawerLayout, R.drawable.ic_drawer, 0, 0) { public void onDrawerClosed(View view) { getActionBar().setTitle(R.string.app_name); } public void onDrawerOpened(View drawerView) { getActionBar().setTitle(R.string.menu); } }; drawerLayout.setDrawerListener(drawerToggle); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); layers = getResources().getStringArray(R.array.layers_array); drawerList = (ListView) findViewById(R.id.left_drawer); View header = getLayoutInflater().inflate(R.layout.drawer_list_header, null); drawerList.addHeaderView(header, null, false); drawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, android.R.id.text1, layers)); View footerView = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate( R.layout.drawer_list_footer, null, false); drawerList.addFooterView(footerView); drawerList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) { map.drawerClickEvent(pos); } }); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); drawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); drawerToggle.onConfigurationChanged(newConfig); } }

En esta Actividad, quiero tener el Cajón de navegación, por lo tanto, extiendo ''NavigationDrawer'' y en algunas otras Actividades, deseo que el usuario tenga el mismo cajón de navegación.

public class SampleActivity extends NavigationDrawer {...}

No sé qué cambiar ...


Cree un cajón de navegación en su MainActivity usando un fragmento.
Inicializa el panel de navegación en MainActivity
ahora, en todas las demás actividades que quiera usar, mismo Cajón de navegación colocará DrawerLayout como base y se fraguará como un cajón de navegación. Simplemente configure android: nombre en su fragmento apuntando a su fragmento de archivo Java. No será necesario inicializar el fragmento en otras actividades.
Puedes acceder a Nav Drawer deslizando en otras actividades como en la aplicación Google Play Store


Encontré la mejor implementación. Está en la aplicación Google I / O 2014 .

Usan el mismo enfoque que Kevin. Si puedes abstraerte de todo lo innecesario en la aplicación de E / S, puedes extraer todo lo que necesites y Google asegura que es un uso correcto del patrón de cajón de navegación. Cada actividad tiene opcionalmente un DrawerLayout como su diseño principal. La parte interesante es cómo se hace la navegación a otras pantallas. Se implementa en BaseActivity esta manera:

private void goToNavDrawerItem(int item) { Intent intent; switch (item) { case NAVDRAWER_ITEM_MY_SCHEDULE: intent = new Intent(this, MyScheduleActivity.class); startActivity(intent); finish(); break;

Esto difiere de la forma común de reemplazar el fragmento actual por una transacción de fragmento. Pero el usuario no detecta una diferencia visual.


Entonces, esta respuesta es unos años tarde, pero alguien puede apreciarla. Android nos ha proporcionado un nuevo widget que facilita el uso de un cajón de navegación con varias actividades.

android.support.design.widget.NavigationView es modular y tiene su propio diseño en la carpeta del menú. La forma en que lo usa es para envolver los diseños xml de la siguiente manera:

  1. Root Layout es un android.support.v4.widget.DrawerLayout que contiene dos elementos secundarios: un <include ... /> para el diseño que se está ajustando (vea 2) y un android.support.design.widget.NavigationView.

    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:openDrawer="start"> <include layout="@layout/app_bar_main" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer" />

nav_header_main es solo un LinearLayout con orientation = vertical para el encabezado de su Navigation Drawar.

activity_main_drawer es un menú xml en tu directorio de res / menú. Puede contener elementos y grupos de su elección. Si usa la Galería de AndroidStudio, el asistente será uno básico para usted y podrá ver cuáles son sus opciones.

  1. El diseño de la barra de aplicaciones generalmente es ahora un android.support.design.widget.CoordinatorLayout y esto incluirá dos elementos secundarios: un android.support.design.widget.AppBarLayout (que contiene un android.support.v7.widget.Toolbar) y un <include ... > para su contenido real (vea 3).

    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="yourpackage.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_main" />

  2. El diseño del contenido puede ser el diseño que desee. Este es el diseño que contiene el contenido principal de la actividad (sin incluir el cajón de navegación o la barra de la aplicación).

Ahora, lo bueno de todo esto es que puede ajustar cada actividad en estos dos diseños pero hacer que su NavigationView (vea el paso 1) siempre apunte a activity_main_drawer (o lo que sea). Esto significa que tendrá el mismo Cajón de navegación (*) en todas las actividades.

  • No serán la misma instancia de NavigationView pero, para ser justos, eso no fue posible incluso con la solución BaseActivity descrita anteriormente.

Hay una solución alternativa: en mi implementación: tengo fragmentos en la primera actividad que tiene Cajón de navegación. Las otras actividades crean el ActionBar y el Cajón de navegación desde el mismo código que la primera actividad, y no tienen fragmentos, el diseño se describe más adelante aquí. En la primera actividad, el clic de acción del elemento se maneja en la misma actividad, y en las otras actividades, la acción se completa más tarde; primero, cambio a la primera actividad, cerrando las otras actividades. Las condiciones son las siguientes:

  1. He puesto el diseño principal y dentro del primer framelayout, y el segundo framelayout está dedicado al cajón en DrawerLayout.

  2. He hecho la inicialización del cajón en onResume de las actividades que no sean la primera. Esto se debe a que necesita volver a inicializarse después de nuevas actualizaciones de intento, ya que todas las actividades son de instancia única.

De esta forma, he podido tener NavigationDrawer y ActionBarCompat en todas las actividades.

A la inversa, podría ser: no use actividades en absoluto, utilice fragmentos y reemplácelos en el contenedor (Diseño lineal, por ejemplo) donde muestra su primer fragmento.

El código está disponible en Android Developer Tutorials, solo tiene que personalizarlo.


Lo hago en Kotlin así:

open class BaseAppCompatActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { protected lateinit var drawerLayout: DrawerLayout protected lateinit var navigationView: NavigationView @Inject lateinit var loginService: LoginService override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Log.d("BaseAppCompatActivity", "onCreate()") App.getComponent().inject(this) drawerLayout = findViewById(R.id.drawer_layout) as DrawerLayout val toolbar = findViewById(R.id.toolbar) as Toolbar setSupportActionBar(toolbar) navigationView = findViewById(R.id.nav_view) as NavigationView navigationView.setNavigationItemSelectedListener(this) val toggle = ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) drawerLayout.addDrawerListener(toggle) toggle.syncState() toggle.isDrawerIndicatorEnabled = true val navigationViewHeaderView = navigationView.getHeaderView(0) navigationViewHeaderView.login_txt.text = SharedKey.username } private inline fun <reified T: Activity> launch():Boolean{ if(this is T) return closeDrawer() val intent = Intent(applicationContext, T::class.java) startActivity(intent) finish() return true } private fun closeDrawer(): Boolean { drawerLayout.closeDrawer(GravityCompat.START) return true } override fun onNavigationItemSelected(item: MenuItem): Boolean { val id = item.itemId when (id) { R.id.action_tasks -> { return launch<TasksActivity>() } R.id.action_contacts -> { return launch<ContactActivity>() } R.id.action_logout -> { createExitDialog(loginService, this) } } return false } }

Las actividades para el cajón deben heredar esta BaseAppCompatActivity , llamar a super.onCreate después de establecer el contenido (en realidad, se puede mover a algún método init) y tener los elementos correspondientes para los identificadores en su diseño


Para cualquier otra persona que desee hacer lo que el cartel original está pidiendo, considere usar fragmentos en su lugar de la forma en que Kevin dijo. Aquí hay un excelente tutorial sobre cómo hacer eso:

https://github.com/codepath/android_guides/wiki/Fragment-Navigation-Drawer

Si elige utilizar actividades en lugar de fragmentos, se encontrará con el problema de que el cajón de navegación se vuelva a crear cada vez que navegue hacia una nueva actividad. Esto da como resultado una representación fea / lenta del cajón de navegación cada vez.


Si quieres un cajón de navegación, debes usar fragmentos. Seguí este tutorial la semana pasada y funciona muy bien:

http://developer.android.com/training/implementing-navigation/nav-drawer.html

También puede descargar el código de muestra de este tutorial para ver cómo puede hacerlo.

Sin fragmentos:

Este es su Código de Actividad Base:

public class BaseActivity extends Activity { public DrawerLayout drawerLayout; public ListView drawerList; public String[] layers; private ActionBarDrawerToggle drawerToggle; private Map map; protected void onCreate(Bundle savedInstanceState) { // R.id.drawer_layout should be in every activity with exactly the same id. drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); drawerToggle = new ActionBarDrawerToggle((Activity) this, drawerLayout, R.drawable.ic_drawer, 0, 0) { public void onDrawerClosed(View view) { getActionBar().setTitle(R.string.app_name); } public void onDrawerOpened(View drawerView) { getActionBar().setTitle(R.string.menu); } }; drawerLayout.setDrawerListener(drawerToggle); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); layers = getResources().getStringArray(R.array.layers_array); drawerList = (ListView) findViewById(R.id.left_drawer); View header = getLayoutInflater().inflate(R.layout.drawer_list_header, null); drawerList.addHeaderView(header, null, false); drawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, android.R.id.text1, layers)); View footerView = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate( R.layout.drawer_list_footer, null, false); drawerList.addFooterView(footerView); drawerList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) { map.drawerClickEvent(pos); } }); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); drawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); drawerToggle.onConfigurationChanged(newConfig); } }

Todas las demás actividades que necesitan tener un panel de navegación deberían ampliar esta actividad en lugar de la actividad misma, por ejemplo:

public class AnyActivity extends BaseActivity { //Because this activity extends BaseActivity it automatically has the navigation drawer //You can just write your normal Activity code and you don''t need to add anything for the navigation drawer }

XML

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- Put what you want as your normal screen in here, you can also choose for a linear layout or any other layout, whatever you prefer --> </FrameLayout> <!-- The navigation drawer --> <ListView android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:background="#111"/> </android.support.v4.widget.DrawerLayout>

Editar:

Experimenté algunas dificultades, así que aquí hay una solución si obtienes NullPointerExceptions. En BaseActivity cambie la función onCreate a protected void onCreateDrawer() . El resto puede permanecer igual. En las actividades que amplían BaseActivity, coloque el código en este orden:

super.onCreate(savedInstanceState); setContentView(R.layout.activity); super.onCreateDrawer();

Esto me ayudó a solucionar mi problema, ¡espero que ayude!

Así es como puede crear un cajón de navegación con múltiples actividades, si tiene alguna pregunta no dude en preguntar.

Editar 2:

Como dice @GregDan, tu BaseActivity también puede anular setContentView() y llamar aCreateDrawer allí:

@Override public void setContentView(@LayoutRes int layoutResID) { super.setContentView(layoutResID); onCreateDrawer() ; }


actualiza este código en baseactivity. y no te olvides de incluir drawer_list_header en tu actividad xml.

super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); setContentView(R.layout.drawer_list_header);

y no use request () en su actividad. pero aún así el cajón no es visible al hacer clic en la imagen ... y al arrastrarlo se verá sin elementos de la lista. Lo intenté mucho pero no tuve éxito. necesito algunos entrenamientos para esto ...


La forma más fácil de reutilizar un cajón de navegación común entre un grupo de actividades

app_base_layout.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <FrameLayout android:id="@+id/view_stub" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" app:menu="@menu/menu_test" /> </android.support.v4.widget.DrawerLayout>

AppBaseActivity.java

/* * This is a simple and easy approach to reuse the same * navigation drawer on your other activities. Just create * a base layout that conains a DrawerLayout, the * navigation drawer and a FrameLayout to hold your * content view. All you have to do is to extend your * activities from this class to set that navigation * drawer. Happy hacking :) * P.S: You don''t need to declare this Activity in the * AndroidManifest.xml. This is just a base class. */ import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.support.design.widget.NavigationView; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; public abstract class AppBaseActivity extends AppCompatActivity implements MenuItem.OnMenuItemClickListener { private FrameLayout view_stub; //This is the framelayout to keep your content view private NavigationView navigation_view; // The new navigation view from Android Design Library. Can inflate menu resources. Easy private DrawerLayout mDrawerLayout; private ActionBarDrawerToggle mDrawerToggle; private Menu drawerMenu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.app_base_layout);// The base layout that contains your navigation drawer. view_stub = (FrameLayout) findViewById(R.id.view_stub); navigation_view = (NavigationView) findViewById(R.id.navigation_view); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 0, 0); mDrawerLayout.setDrawerListener(mDrawerToggle); getSupportActionBar().setDisplayHomeAsUpEnabled(true); drawerMenu = navigation_view.getMenu(); for(int i = 0; i < drawerMenu.size(); i++) { drawerMenu.getItem(i).setOnMenuItemClickListener(this); } // and so on... } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } /* Override all setContentView methods to put the content view to the FrameLayout view_stub * so that, we can make other activity implementations looks like normal activity subclasses. */ @Override public void setContentView(int layoutResID) { if (view_stub != null) { LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); View stubView = inflater.inflate(layoutResID, view_stub, false); view_stub.addView(stubView, lp); } } @Override public void setContentView(View view) { if (view_stub != null) { ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); view_stub.addView(view, lp); } } @Override public void setContentView(View view, ViewGroup.LayoutParams params) { if (view_stub != null) { view_stub.addView(view, params); } } @Override public boolean onOptionsItemSelected(MenuItem item) { // Pass the event to ActionBarDrawerToggle, if it returns // true, then it has handled the app icon touch event if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } // Handle your other action bar items... return super.onOptionsItemSelected(item); } @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.item1: // handle it break; case R.id.item2: // do whatever break; // and so on... } return false; } }


package xxxxxx; import android.app.SearchManager; import android.content.Context; import android.content.Intent; import android.widget.SearchView; import android.support.design.widget.NavigationView; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Toast; public class loginhome extends AppCompatActivity { private Toolbar toolbar; private NavigationView navigationView; private DrawerLayout drawerLayout; // Make sure to be using android.support.v7.app.ActionBarDrawerToggle version. // The android.support.v4.app.ActionBarDrawerToggle has been deprecated. private ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.loginhome); // Initializing Toolbar and setting it as the actionbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); //Initializing NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); //Setting Navigation View Item Selected Listener to handle the item click of the navigation menu navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { // This method will trigger on item Click of navigation menu public boolean onNavigationItemSelected(MenuItem menuItem) { //Checking if the item is in checked state or not, if not make it in checked state if(menuItem.isChecked()) menuItem.setChecked(false); else menuItem.setChecked(true); //Closing drawer on item click drawerLayout.closeDrawers(); //Check to see which item was being clicked and perform appropriate action switch (menuItem.getItemId()){ //Replacing the main content with ContentFragment Which is our Inbox View; case R.id.nav_first_fragment: Toast.makeText(getApplicationContext(),"First fragment",Toast.LENGTH_SHORT).show(); FirstFragment fragment = new FirstFragment(); android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.frame,fragment); fragmentTransaction.commit(); return true; // For rest of the options we just show a toast on click case R.id.nav_second_fragment: Toast.makeText(getApplicationContext(),"Second fragment",Toast.LENGTH_SHORT).show(); SecondFragment fragment2 = new SecondFragment(); android.support.v4.app.FragmentTransaction fragmentTransaction2 = getSupportFragmentManager().beginTransaction(); fragmentTransaction2.replace(R.id.frame,fragment2); fragmentTransaction2.commit(); return true; default: Toast.makeText(getApplicationContext(),"Somethings Wrong",Toast.LENGTH_SHORT).show(); return true; } } }); // Initializing Drawer Layout and ActionBarToggle drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.drawer_open, R.string.drawer_close){ @Override public void onDrawerClosed(View drawerView) { // Code here will be triggered once the drawer closes as we dont want anything to happen so we leave this blank super.onDrawerClosed(drawerView); } @Override public void onDrawerOpened(View drawerView) { // Code here will be triggered once the drawer open as we dont want anything to happen so we leave this blank super.onDrawerOpened(drawerView); } }; //Setting the actionbarToggle to drawer layout drawerLayout.setDrawerListener(actionBarDrawerToggle); //calling sync state is necessay or else your hamburger icon wont show up actionBarDrawerToggle.syncState(); }

usa esto para tu toolbar.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:elevation="4dp" android:id="@+id/toolbar" android:theme="@style/ThemeOverlay.AppCompat.Dark" > </android.support.v7.widget.Toolbar>

use esto para el encabezado de navegación si quiere usar

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="192dp" android:background="?attr/colorPrimaryDark" android:padding="16dp" android:theme="@style/ThemeOverlay.AppCompat.Dark" android:orientation="vertical" android:gravity="bottom"> <LinearLayout android:layout_width="match_parent" android:layout_height="56dp" android:id="@+id/navhead" android:orientation="vertical" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="16dp" android:textColor="#ffffff" android:text="tanya" android:textSize="14sp" android:textStyle="bold" /> <TextView android:id="@+id/email" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ffffff" android:layout_marginLeft="16dp" android:layout_marginTop="5dp" android:text="tanya.com" android:textSize="14sp" android:textStyle="normal" /> </LinearLayout> <de.hdodenhof.circleimageview.CircleImageView android:layout_width="70dp" android:layout_height="70dp" android:layout_below="@+id/imageView" android:layout_marginTop="15dp" android:src="@drawable/face" android:id="@+id/circleView" /> </RelativeLayout>