android - personalizar - El icono del cajón de navegación(ic_drawer) no se muestra
navigationview android (5)
Resolví el mismo problema al tener un <meta-data>
especificado para mi actividad, pero el valor de android: apunta a la misma actividad.
Por lo tanto, si el nombre de la actividad es MainActivity, a continuación, agregue la etiqueta a continuación a su actividad en el archivo de manifiesto.
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.MainActivity" />
Espero que esto ayude. :)
Estoy implementando un cajón de navegación para mi aplicación. Ahora funciona perfectamente, excepto por un pequeño fallo. Cuando configuro el ícono del cajón de navegación (ic_drawer) para reemplazar el ícono caret regular "HomeAsUp", aún obtengo la flecha. El icono del cajón de navegación no se muestra. He implementado todos los métodos que estaban en el sitio web de desarrolladores de Android. Pero no parece funcionar.
A continuación se muestra mi código:
DrawerLayout mDrawerLayout;
FrameLayout leftDrawer, rightDrawer, contentFrame;
ActionBarDrawerToggle mDrawerToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
initializeViews();
}
private void initializeViews() {
// TODO Auto-generated method stub
mDrawerLayout = (DrawerLayout) findViewById(R.id.mDrawerLayout);
mDrawerToggle = new ActionBarDrawerToggle(this,
mDrawerLayout, R.drawable.ic_drawer,
R.string.drawer_open_content_desc,
R.string.drawer_close_content_desc);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
mDrawerLayout.setDrawerListener(mDrawerToggle);
leftDrawer = (FrameLayout) findViewById(R.id.drawerLeft_frame);
rightDrawer = (FrameLayout) findViewById(R.id.drawerRight_frame);
contentFrame = (FrameLayout) findViewById(R.id.content_frame);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.home, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
Sé que es bastante tarde para responder esto, pero esto ayudaría a alguien al menos.
Probablemente debería agregar estas líneas de código para mostrar ese ícono de navegación.
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
Simplemente ponga este código en su archivo styles.xml:
<item name="homeAsUpIndicator">@drawable/ic_drawer</item>
<item name="android:homeAsUpIndicator">@drawable/ic_drawer</item>
Tuve este mismo problema y esto me funcionó.
EDITAR
Programáticamente puede establecer: getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_drawer);
Tienes que poner este código:
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.drawable.ic_drawer);
o
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_drawer);
Espero que este código te ayude.
Verifique en el archivo AndroidManifest.xml, para que la actividad específica NO tenga el conjunto de metadatos "android.support.PARENT_ACTIVITY"
. Intente eliminar <meta-data>
si está configurado de esta manera:
<activity>
...
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.company.project.ParentActivity"/>
</activity>