How to change drawer toggle icon on Android apps? -


i have created drawer toggle on android app. shown on top-left of screen. when click toggle, list view items shown on left side. below screen home screen:

enter image description here

when click toggle, shown below:

enter image description here

now want change icon of toggle button below code:

mdrawertoggle.sethomeasupindicator(r.drawable.ic_drawer); mdrawertoggle.setdrawerindicatorenabled(false); 

the toggle icon changed drawable listview items not shown when click toggle. wonder why changing toggle icon disable toggle click.

below activity class:

public class mainactivity extends appcompatactivity {     private drawerlayout mdrawerlayout;     private listview mdrawerlist;     private actionbardrawertoggle mdrawertoggle;     private string[] mplanettitles;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);          setcontentview(r.layout.activity_main);         getsupportactionbar().setdisplayhomeasupenabled(true);         getsupportactionbar().sethomebuttonenabled(true);         getsupportactionbar().setdisplayshowtitleenabled(false);          mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout);          mdrawerlist = (listview) findviewbyid(r.id.left_drawer);         mplanettitles = getresources().getstringarray(r.array.planets_array);         // set adapter list view         mdrawerlist.setadapter(new arrayadapter<string>(this,                 r.layout.drawer_list_item, mplanettitles));         mdrawerlist.setonitemclicklistener(new draweritemclicklistener());          mdrawertoggle = new actionbardrawertoggle(                 this,                  /* host activity */                 mdrawerlayout,                 r.string.drawer_open,  /* "open drawer" description accessibility */                 r.string.drawer_close  /* "close drawer" description accessibility */         ) {             public void ondrawerclosed(view view) {                 invalidateoptionsmenu(); // creates call onprepareoptionsmenu()             }              public void ondraweropened(view drawerview) {                 invalidateoptionsmenu(); // creates call onprepareoptionsmenu()             }         };         mdrawertoggle.sethomeasupindicator(r.drawable.ic_drawer); //        mdrawertoggle.setdrawerindicatorenabled(false);         mdrawerlayout.adddrawerlistener(mdrawertoggle);     }      @override     public boolean onoptionsitemselected(menuitem item) {         if(mdrawertoggle.onoptionsitemselected(item)) {             return true;         }         return super.onoptionsitemselected(item);     }      @override     protected void onpostcreate(bundle savedinstancestate) {         super.onpostcreate(savedinstancestate);         // sync toggle state after onrestoreinstancestate has occurred.         mdrawertoggle.syncstate();     }      @override     public void onconfigurationchanged(configuration newconfig) {         super.onconfigurationchanged(newconfig);         // pass configuration change drawer toggls         mdrawertoggle.onconfigurationchanged(newconfig);     }       /* click listner listview in navigation drawer */     private class draweritemclicklistener implements listview.onitemclicklistener {         @override         public void onitemclick(adapterview<?> parent, view view, int position, long id) {         }     } } 

the v7 actionbardrawertoggle 2 things: opens/closes drawer, , provides hamburger icon , animation. calling setdrawerindicatorenabled(false) remove icon, disables toggle. if don't want icon, you're better off not using actionbardrawertoggle, , handling opening/closing drawer yourself.

  • first, remove of code actionbardrawertoggle.
  • then set desired icon getsupportactionbar().sethomeasupindicator().
  • in onoptionsitemselected(), if menuitem's id android.r.id.home, open or close drawer appropriate.
  • lastly, drawerlayout.drawerlistener functionality of actionbardrawertoggle can replaced basic simpledrawerlistener.

public class mainactivity extends appcompatactivity {     private drawerlayout mdrawerlayout;     private listview mdrawerlist;     private string[] mplanettitles;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          getsupportactionbar().setdisplayhomeasupenabled(true);         getsupportactionbar().setdisplayshowtitleenabled(false);          mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout);          mdrawerlist = (listview) findviewbyid(r.id.left_drawer);         mplanettitles = getresources().getstringarray(r.array.planets_array);         // set adapter list view         mdrawerlist.setadapter(new arrayadapter<string>(this,             r.layout.drawer_list_item, mplanettitles));         mdrawerlist.setonitemclicklistener(new draweritemclicklistener());          // *** set desired icon         getsupportactionbar().sethomeasupindicator(r.drawable.ic_drawer);          // *** replace drawerlistener functionality of actionbardrawertoggle         mdrawerlayout.adddrawerlistener(new drawerlayout.simpledrawerlistener() {                 @override                 public void ondrawerclosed(view view) {                     invalidateoptionsmenu(); // creates call onprepareoptionsmenu()                 }                  @override                 public void ondraweropened(view drawerview) {                     invalidateoptionsmenu(); // creates call onprepareoptionsmenu()                 }             }         );     }      @override     public boolean onoptionsitemselected(menuitem item) {         // *** if home button clicked, open/close drawer needed         if (item.getitemid() == android.r.id.home) {             if (mdrawerlayout.isdraweropen(gravitycompat.start)) {                 mdrawerlayout.closedrawer(gravitycompat.start);             }             else {                 mdrawerlayout.opendrawer(gravitycompat.start);             }              return true;         }          return super.onoptionsitemselected(item);     }      @override     protected void onpostcreate(bundle savedinstancestate) {         super.onpostcreate(savedinstancestate);     }      @override     public void onconfigurationchanged(configuration newconfig) {         super.onconfigurationchanged(newconfig);     }      /* click listner listview in navigation drawer */     private class draweritemclicklistener implements listview.onitemclicklistener {         @override         public void onitemclick(adapterview<?> parent, view view, int position, long id) {         }     } } 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -