Android appcompat API 10 collapse action view -


i'm developing , android app needs support api10+ followed many tutorials set appcompat manage create action bar.

links like: https://stackoverflow.com/a/21291156/2789106 http://developer.android.com/guide/topics/ui/actionbar.html

there 3 things cannot do.

  1. when search opens, search magnifier not change drawable set.
  2. i cannot change "back" icon (the home button, left logo (it's diferrent image 1 passed in creation of drawertoggle))
  3. i cannot programmatically close (collapse) action view when keyboard search clicked. (calling collapseactionview() inplemented in api 14)

here's code:

protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);      // actionbardrawertoggle ties the proper interactions     // between sliding drawer , action bar app icon      mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout);      mdrawertoggle = new actionbardrawertoggle(this, mdrawerlayout,             r.drawable.ic_navigation_drawer,             r.string.navigation_drawer_open,             r.string.navigation_drawer_close) {          /** called when drawer has settled in closed state. */         public void ondrawerclosed(view view) {             supportinvalidateoptionsmenu(); // creates call onprepareoptionsmenu()         }          /** called when drawer has settled in open state. */         public void ondraweropened(view drawerview) {             supportinvalidateoptionsmenu(); // creates call onprepareoptionsmenu()         }      };      // set drawer toggle drawerlistener     mdrawerlayout.setdrawerlistener(mdrawertoggle);      // restore app state if     if (savedinstancestate == null) {         mleftmenucontainer = (linearlayout) findviewbyid(r.id.left_menu_container);         mleftmenucontainer.setontouchlistener(new view.ontouchlistener() {             @override             public boolean ontouch(view arg0, motionevent arg1) {                 // return true avoid tap on view                 return true;             }          });         mdrawerlayout.closedrawer(mleftmenucontainer);      }      // enable actionbar app icon behave action toggle nav drawer     getsupportactionbar().setdisplayhomeasupenabled(true);     getsupportactionbar().sethomebuttonenabled(true);     getsupportactionbar().setdisplayshowtitleenabled(true);     getsupportactionbar().setlogo(r.drawable.ic_action_bar_logo);  }  /* called whenever call supportinvalidateoptionsmenu() */ @override public boolean onprepareoptionsmenu(menu menu) {     // if nav drawer open, hide action items related content     // view     if (mdrawerlayout != null && mleftmenucontainer != null) {         boolean draweropen = mdrawerlayout.isdraweropen(mleftmenucontainer);         (int = 0; < menu.size(); i++) {             menu.getitem(i).setvisible(!draweropen);         }     }      return super.onprepareoptionsmenu(menu); }  @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);     mdrawertoggle.onconfigurationchanged(newconfig);   }  @override public boolean oncreateoptionsmenu(menu menu) {      mmenu = menu;     // inflate menu; adds items action bar if present.     // enable actionbar app icon behave action toggle nav drawer     getmenuinflater().inflate(r.menu.main, menu);      menuitem searchitem = menu.finditem(r.id.action_bar_search);     final searchview searchview = (searchview) menuitemcompat.getactionview(searchitem);      searchmanager searchmanager = (searchmanager) getsystemservice(context.search_service);     searchableinfo info = searchmanager.getsearchableinfo(getcomponentname());      searchview.setsearchableinfo(info);        autocompletetextview searchtext = (autocompletetextview) searchview.findviewbyid(android.support.v7.appcompat.r.id.search_src_text);     searchtext.sethinttextcolor(getresources().getcolor(r.color.color_action_bar_search_text));     searchtext.settextcolor(getresources().getcolor(r.color.color_action_bar_search_text));      searchview.seticonifiedbydefault(true);      // getting 'search_plate' linearlayout.     view searchplate = searchview.findviewbyid(android.support.v7.appcompat.r.id.search_plate);     // setting background of 'search_plate' personal defined drawable.     if (searchplate != null) {         searchplate             .setbackgroundresource(r.drawable.texfield_search_view_theme);     }      // set search view clear icon     imageview searchiconclearview = (imageview) searchview             .findviewbyid(android.support.v7.appcompat.r.id.search_close_btn);     if (searchiconclearview != null) {         log.v(log_tag, "should change clear icon here");          searchiconclearview             .setimageresource(r.drawable.ic_action_bar_clear_search);      }      // set search view magnifier icon     imageview searchicon = (imageview) searchview.findviewbyid(android.support.v7.appcompat.r.id.search_mag_icon);     if (searchicon != null) {         log.v(log_tag, "should change search icon here");         searchicon.setimageresource(r.drawable.ic_action_bar_back);     }      // set on click open fragment, not activity     final searchview.onquerytextlistener querytextlistener = new searchview.onquerytextlistener() {         @override         public boolean onquerytextchange(string newtext) {             //             return true;         }          @override         public boolean onquerytextsubmit(string query) {             log.v(log_tag, "performed search with: " + query);             searchview.clearfocus();             return true;         }     };      searchview.setonquerytextlistener(querytextlistener);      menuitemcompat.setonactionexpandlistener(searchitem, new onactionexpandlistener() {          @override         public boolean onmenuitemactioncollapse(menuitem arg0) {             mmenu.finditem(r.id.action_bar_cart).setvisible(true);             return true;         }          @override         public boolean onmenuitemactionexpand(menuitem arg0) {             getsupportactionbar().seticon(r.drawable.ic_action_bar_logo);             mmenu.finditem(r.id.action_bar_cart).setvisible(false);             return true;         }       });      return super.oncreateoptionsmenu(menu); } 

can please tell me if i'm doing wrong?

-- edit --

i managed fix question number 1 , 2:

what need define homeupicon in theme. if supporting api 10 me:

<style name="theme.mytheme" parent="@style/theme.appcompat.light">     <item name="searchviewsearchicon">@drawable/your_search_icon</item>      <!-- api 13- support -->     <item name="homeasupindicator">@drawable/your_back_icon</item>       <!-- api 14+  -->     <item name="android:homeasupindicator">@drawable/your_back_icon</item>   </style> 

found in
actionbarsherlock: changing homeasupindicator doesn't work
, changing background drawable of searchview widget

the important question still pending , if knows answer please post here!

try this:

   public boolean onquerytextsubmit(string query) {         menuitemcompat.collapseactionview(searchitem);         return false;     } 

Comments

Popular posts from this blog

user interface - How to replace the Python logo in a Tkinter-based Python GUI app? -

objective c - Greedy NSProgressIndicator Allocation -

how to set an OCR language in Google Drive -