J'ai une activité avec un DrawerLayout
. Je peux ouvrir le tiroir de deux façons différentes... en glissant de la zone gauche de l'écran vers la droite et en cliquant sur le titre de l'application. I NE PAS avoir une icône d'application affichée, seulement un titre. J'ai implémenté ceci exactement comme recommandé par Google ici : Création d'un tiroir de navigation : Ouvrir et fermer avec l'icône de l'application
Tout est fonctionnel en ce qui concerne l'ouverture et la fermeture du tiroir lui-même. Cependant, il n'affiche pas la norme DrawerLayout
qui est censé être utilisé. Au lieu de cela, j'obtiens le signe d'insertion normal (qui ressemble à un signe moins que).
Dès que je réintroduis l'icône de l'application dans le fichier ActionBar
il commence à fonctionner comme prévu. L'icône de la disposition du tiroir s'affiche et s'anime lorsque le tiroir est ouvert ou fermé. J'ai essayé de supprimer l'icône de l'application à la fois dans mon fichier XML de styles et de manière programmatique.
Y a-t-il un moyen d'obtenir le DrawerLayout
l'icône fonctionne SANS l'icône de l'application ? ??
UPDATE : J'ai trouvé un moyen de contourner le problème, mais c'est plus une astuce qu'une solution. J'ai simplement créé un PNG transparent de 1x1 pixel (blank.png) et l'ai défini comme icône de mon application dans mon fichier styles.xml. Ci-dessous le code relatif :
styles.xml
<style name="MyCustomTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyCustomActionBar</item>
<item name="android:icon">@drawable/blank</item>
</style>
<style name="MyCustomActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:displayOptions">showHome|showTitle|homeAsUp</item>
</style>
MainActivity -> onCreate()
this.navDrawerToggle = new ActionBarDrawerToggle
(
this,
this.navDrawerLayout,
R.drawable.icon_nav_drawer,
R.string.nav_drawer_open,
R.string.nav_drawer_closed
)
{
public void onDrawerClosed(View view) {}
public void onDrawerOpened(View drawerView) {}
};
MainActivity -> onPostCreate()
super.onPostCreate(savedInstanceState);
this.navDrawerToggle.syncState();
Activité principale -> onResume()
this.navDrawer.setOnItemClickListener(new DrawerItemClickListener());
this.navDrawerLayout.setDrawerListener(this.navDrawerToggle);
MainActivity -> onPause()
this.navDrawer.setOnItemClickListener(null);
this.navDrawerLayout.setDrawerListener(null);
Activité principale -> onConfigurationChanged(Configuration newConfig)
super.onConfigurationChanged(newConfig);
navDrawerToggle.onConfigurationChanged(newConfig);
Activité principale -> onOptionsItemSelected(MenuItem item)
if (this.navDrawerToggle.onOptionsItemSelected(item)) {return true;}
else
{
// A bunch of item click handling happens here...
return true;
}