Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Navigation Drawer Icon (ic_drawer) not showing

I am implementing a navigation drawer for my app. Now it works perfectly except for one small glitch. When I set the Navigation Drawer Icon (ic_drawer) to replace the regular "HomeAsUp" caret icon, I still get the arrow. The Nav Drawer icon does not show. I have implemented every method that was on the android developers website. But it doesn't seem to work.

Below is my code:

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); } 
like image 927
Adifyr Avatar asked Dec 04 '13 20:12

Adifyr


People also ask

Where is the navigation drawer?

The user can view the navigation drawer when the user swipes a finger from the left edge of the activity. They can also find it from the home activity by tapping the app icon in the action bar. The drawer icon is displayed on all top-level destinations that use a DrawerLayout.

How do you change the DrawerLayout icon on the right side of the device screen?

Edit. According to Creating a Navigation Drawer, The drawer view (the ListView) must specify its horizontal gravity with the android:layout_gravity attribute. To support right-to-left (RTL) languages, specify the value with "start" instead of "left" (so the drawer appears on the right when the layout is RTL).


2 Answers

I know it is quite late to answer this but this would help someone atleast.

You should probably add these lines of code to show that navigation icon.

@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); } 
like image 136
Naveen Kumar Avatar answered Sep 29 '22 06:09

Naveen Kumar


Simply put this code in your styles.xml file:

<item name="homeAsUpIndicator">@drawable/ic_drawer</item> <item name="android:homeAsUpIndicator">@drawable/ic_drawer</item> 

I had this same problem and this worked for me.

EDIT

Programmatically you can set: getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_drawer);

like image 40
Filipe Brito Avatar answered Sep 29 '22 06:09

Filipe Brito