java - Get Logo (image) in menudrawer android -


i want place image @ bottom of menudrawer (google menu), doesn't work. have researched whole internet , tried can imagine (in java files , in xml files). still doesn't work. there example @ image below (red border):

inspiration app

the image below app menudrawer:

my app

i appreciate help.


like said before want image @ bottom of menudrawer app above.

there few files related menu , in activity_main.xml got elements (like list items) of whole menu. tried place imageview in activity_main.xml not work. here stuck don't know how this. help.

here code of activity_main.xml imageview have placed:

<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">  <!-- framelayout display fragments --> <framelayout     android:id="@+id/frame_container"     android:layout_width="match_parent"     android:layout_height="match_parent" />  <!-- listview display slider menu --> <listview     android:id="@+id/list_slidermenu"     android:layout_width="240dp"     android:layout_height="match_parent"     android:layout_gravity="start"     android:choicemode="singlechoice"     android:divider="@color/black_overlay"     android:dividerheight="1dp"            android:listselector="@drawable/list_selector"     android:background="@color/black_overlay"/>  <imageview android:contentdescription="@string/app_name"     android:background="@drawable/solaylogo"     android:maxwidth="30dp"     android:maxheight="10dp"/>  </android.support.v4.widget.drawerlayout> 

the java code below related xml file:

package nl.vitaminen.solay;   import java.util.arraylist;  import nl.vitaminen.solay.r; import nl.vitaminen.solay.adapter.navdrawerlistadapter; import nl.vitaminen.solay.model.navdraweritem; //import nl.vitaminen.solay.r.array; //import nl.vitaminen.solay.r.drawable; //import nl.vitaminen.solay.r.id; //import nl.vitaminen.solay.r.layout; //import nl.vitaminen.solay.r.menu; //import nl.vitaminen.solay.r.string;  import android.app.activity; import android.app.alertdialog; import android.app.fragment; import android.app.fragmentmanager; import android.content.intent; import android.content.res.configuration; import android.content.res.typedarray; import android.net.uri; import android.os.bundle; import android.support.v4.app.actionbardrawertoggle; import android.support.v4.widget.drawerlayout; import android.util.log; import android.view.keyevent; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.adapterview; import android.widget.listview;  public class mainactivity extends activity { private drawerlayout mdrawerlayout; private listview mdrawerlist; private actionbardrawertoggle mdrawertoggle;  // nav drawer title private charsequence mdrawertitle;  // used store app title private charsequence mtitle;  // slide menu items private string[] navmenutitles; private typedarray navmenuicons;  private arraylist<navdraweritem> navdraweritems; private navdrawerlistadapter adapter;  int = 0; int j = 0; int k = 0; boolean security = false; boolean power = false;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);      mtitle = mdrawertitle = gettitle();      // load slide menu items     navmenutitles = getresources().getstringarray(r.array.nav_drawer_items);      // nav drawer icons resources     navmenuicons = getresources()             .obtaintypedarray(r.array.nav_drawer_icons);      mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout);     mdrawerlist = (listview) findviewbyid(r.id.list_slidermenu);      navdraweritems = new arraylist<navdraweritem>();      // adding nav drawer items array     // home     navdraweritems.add(new navdraweritem(navmenutitles[0], navmenuicons.getresourceid(0, -1)));     // berichten     navdraweritems.add(new navdraweritem(navmenutitles[1], navmenuicons.getresourceid(1, -1)));     // phone     navdraweritems.add(new navdraweritem(navmenutitles[2], navmenuicons.getresourceid(2, -1)));     //     navdraweritems.add(new navdraweritem(navmenutitles[3], navmenuicons.getresourceid(3, -1)));     // settings     navdraweritems.add(new navdraweritem(navmenutitles[4], navmenuicons.getresourceid(4, -1)));       // example: navdraweritems.add(new navdraweritem(navmenutitles[3], navmenuicons.getresourceid(3, -1), true, "22"));       // recycle typed array     navmenuicons.recycle();      mdrawerlist.setonitemclicklistener(new slidemenuclicklistener());      // setting nav drawer list adapter     adapter = new navdrawerlistadapter(getapplicationcontext(),             navdraweritems);     mdrawerlist.setadapter(adapter);      // enabling action bar app icon , behaving toggle button     getactionbar().setdisplayhomeasupenabled(true);     getactionbar().sethomebuttonenabled(true);      mdrawertoggle = new actionbardrawertoggle(this, mdrawerlayout,             r.drawable.ic_drawer, //nav menu toggle icon             r.string.app_name, // nav drawer open - description accessibility             r.string.app_name // nav drawer close - description accessibility     ) {         public void ondrawerclosed(view view) {             getactionbar().settitle(mtitle);             // calling onprepareoptionsmenu() show action bar icons             invalidateoptionsmenu();             //getactionbar().show();         }          public void ondraweropened(view drawerview) {             getactionbar().settitle(mdrawertitle);             // calling onprepareoptionsmenu() hide action bar icons             invalidateoptionsmenu();             //getactionbar().hide();          }     };     mdrawerlayout.setdrawerlistener(mdrawertoggle);      if (savedinstancestate == null) {         // on first time display view first nav item         displayview(0);     } }  /**  * slide menu item click listener  * */ private class slidemenuclicklistener implements         listview.onitemclicklistener {     @override     public void onitemclick(adapterview<?> parent, view view, int position,             long id) {         // display view selected nav drawer item         displayview(position);     } }  @override public boolean oncreateoptionsmenu(menu menu) {     getmenuinflater().inflate(r.menu.main, menu);     return true; }  @override public boolean onoptionsitemselected(menuitem item) {     // toggle nav drawer on selecting action bar app icon/title     if (mdrawertoggle.onoptionsitemselected(item)) {         return true;     }     else if(mdrawerlayout.isdraweropen(mdrawerlist) && onoptionsitemselected(item)){         return true;     }     // handle action bar actions click     switch (item.getitemid()) {     case r.id.action_settings:         return true;     default:         return super.onoptionsitemselected(item);     } }  /***  * called when invalidateoptionsmenu() triggered  */ @override public boolean onprepareoptionsmenu(menu menu) {     // if nav drawer opened, hide action items     boolean draweropen = mdrawerlayout.isdraweropen(mdrawerlist);     menu.finditem(r.id.action_settings).setvisible(!draweropen);      hidemenuitems(menu, !draweropen);     return super.onprepareoptionsmenu(menu); }  private void hidemenuitems(menu menu, boolean visible){     for(int =0; i< menu.size(); i++){         menu.getitem(i).setvisible(visible);     } } /**  * diplaying fragment view selected nav drawer list item  * */ private void displayview(int position) {     // update main content replacing fragments     fragment fragment = null;     switch (position) {     case 0:         fragment = new homefragment();         break;     case 1:         fragment = new berichtenfragment();         break;     case 2:         //fragment = new phonefragment();         intent call = new intent(intent.action_dial, uri.parse("tel:" + "+31882002555"));         startactivity(call);         mdrawerlayout.closedrawer(mdrawerlist);         break;     case 3:         fragment = new aboutfragment();         break;     case 4:         fragment = new settingsfragment();         break;     default:         break;     }      if (fragment != null) {         fragmentmanager fragmentmanager = getfragmentmanager();         fragmentmanager.begintransaction()                 .replace(r.id.frame_container, fragment).commit();          // update selected item , title, close drawer         mdrawerlist.setitemchecked(position, true);         mdrawerlist.setselection(position);         settitle(navmenutitles[position]);         mdrawerlayout.closedrawer(mdrawerlist);     } else {         // error in creating fragment         log.e("mainactivity", "error in creating fragment");     } }  @override public void settitle(charsequence title) {     mtitle = title;     getactionbar().settitle(mtitle); }  /**  * when using actionbardrawertoggle, must call during  * onpostcreate() , onconfigurationchanged()...  */  @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); }  @override public boolean onkeydown(int keycode, keyevent e) {     if (keycode == keyevent.keycode_menu) {         // action...          if (!mdrawerlayout.isdraweropen(mdrawerlist)) {             mdrawerlayout.opendrawer(mdrawerlist);         }         else{             mdrawerlayout.closedrawer(mdrawerlist);         }         return true;     }      return super.onkeydown(keycode, e); }  } 

the codes below related menudrawer:

the code below navdrawerlistadapter.java:

package nl.vitaminen.solay.adapter;  import nl.vitaminen.solay.r; import nl.vitaminen.solay.model.navdraweritem;  import java.util.arraylist;  //import nl.vitaminen.solay.r.id; //import nl.vitaminen.solay.r.layout;  import android.app.activity; import android.content.context; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.baseadapter; import android.widget.imageview; import android.widget.textview;  public class navdrawerlistadapter extends baseadapter {  private context context; private arraylist<navdraweritem> navdraweritems;  public navdrawerlistadapter(context context, arraylist<navdraweritem> navdraweritems){     this.context = context;     this.navdraweritems = navdraweritems; }  @override public int getcount() {     return navdraweritems.size(); }  @override public object getitem(int position) {            return navdraweritems.get(position); }  @override public long getitemid(int position) {     return position; }  @override public view getview(int position, view convertview, viewgroup parent) {     if (convertview == null) {         layoutinflater minflater = (layoutinflater)                 context.getsystemservice(activity.layout_inflater_service);         convertview = minflater.inflate(r.layout.drawer_list_item, null);     }      imageview imgicon = (imageview) convertview.findviewbyid(r.id.icon);     textview txttitle = (textview) convertview.findviewbyid(r.id.title);     textview txtcount = (textview) convertview.findviewbyid(r.id.counter);      imgicon.setimageresource(navdraweritems.get(position).geticon());             txttitle.settext(navdraweritems.get(position).gettitle());      // displaying count     // check whether set visible or not     if(navdraweritems.get(position).getcountervisibility()){         txtcount.settext(navdraweritems.get(position).getcount());     }else{         // hide counter view         txtcount.setvisibility(view.gone);     }      return convertview; }  } 

i know xml , java files below not important, because list items , not whole menu. reason place maybe need it, resolve problem.

--

the code below navdraweritem.java :

package nl.vitaminen.solay.model;  public class navdraweritem {  private string title; private int icon; private string count = "0"; // boolean set visiblity of counter private boolean iscountervisible = false;  public navdraweritem(){}  public navdraweritem(string title, int icon){     this.title = title;     this.icon = icon; }  public navdraweritem(string title, int icon, boolean iscountervisible, string count){     this.title = title;     this.icon = icon;     this.iscountervisible = iscountervisible;     this.count = count; }  public string gettitle(){     return this.title; }  public int geticon(){     return this.icon; }  public string getcount(){     return this.count; }  public boolean getcountervisibility(){     return this.iscountervisible; }  public void settitle(string title){     this.title = title; }  public void seticon(int icon){     this.icon = icon; }  public void setcount(string count){     this.count = count; }  public void setcountervisibility(boolean iscountervisible){     this.iscountervisible = iscountervisible; } } 

and final code below related navdrawerlistadapter.java:

<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="48dp" android:background="@drawable/list_selector">  <imageview     android:id="@+id/icon"     android:layout_width="25dp"     android:layout_height="wrap_content"     android:layout_alignparentleft="true"     android:layout_marginleft="12dp"     android:layout_marginright="12dp"     android:contentdescription="@string/desc_list_item_icon"     android:src="@drawable/ic_home"     android:layout_centervertical="true" />  <textview     android:id="@+id/title"     android:layout_width="wrap_content"     android:layout_height="match_parent"     android:layout_torightof="@id/icon"     android:minheight="?android:attr/listpreferreditemheightsmall"     android:textappearance="?android:attr/textappearancelistitemsmall"     android:textcolor="@color/list_item_title"     android:gravity="center_vertical"     android:paddingright="40dp"/>  <textview android:id="@+id/counter"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:background="@drawable/counter_bg"     android:layout_alignparentright="true"     android:layout_centervertical="true"     android:layout_marginright="8dp"     android:textcolor="@color/counter_text_color"/>  </relativelayout> 

thank taking time resolve problem. hope enough information you.

finally solved problem, changed in activity_main.xml background of listview follows:

<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">  <!-- framelayout display fragments --> <framelayout android:id="@+id/frame_container" android:layout_width="match_parent" android:layout_height="match_parent" />  <!-- listview display slider menu --> <listview android:id="@+id/list_slidermenu" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choicemode="singlechoice" android:divider="@color/black_overlay" android:dividerheight="1dp"        android:listselector="@drawable/list_selector" android:background="@drawable/navigation_image_below"/> <!-- line  changed -->  <imageview android:contentdescription="@string/app_name" android:background="@drawable/solaylogo" android:maxwidth="30dp" android:maxheight="10dp"/>  </android.support.v4.widget.drawerlayout> 

the image below navigation_image_below.png

enter image description here

i hope solution problem. not, because if screen resolution more or less image stretched.

i appreciate if has solution.


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -