Android Hide ActionBar while scrolling in a ListView -
i looking method hide actionbar googleplay, when scrolling down , let actionbar reappear when scrolling up. have found lot of guides them recyclerview , using listview.
the best guide found this: https://mzgreen.github.io/2015/06/23/how-to-hideshow-toolbar-when-list-is-scrolling%28part3%29/.
this layout:
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.coordinatorlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/coordinatorlayout" android:layout_width="match_parent" android:layout_height="match_parent"> <listview android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/flist" /> <android.support.design.widget.appbarlayout android:id="@+id/appbarlayout" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionbarsize" android:background="?attr/colorprimary"/> </android.support.design.widget.appbarlayout> <android.support.v4.view.viewpager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent"/> </android.support.design.widget.coordinatorlayout>
this error:
process: com.mycompany.test, pid: 6172 java.lang.runtimeexception: unable start activity componentinfo{com.mycompany.test/com.mycompany.test.activities.friends_list_activity}: android.view.inflateexception: binary xml file line #2: error inflating class android.support.design.widget.coordinatorlayout @ android.app.activitythread.performlaunchactivity(activitythread.java:2329) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2389) @ android.app.activitythread.access$900(activitythread.java:147) @ android.app.activitythread$h.handlemessage(activitythread.java:1296) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:135) @ android.app.activitythread.main(activitythread.java:5254) @ java.lang.reflect.method.invoke(native method) @ java.lang.reflect.method.invoke(method.java:372) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:898) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:693) @ de.robv.android.xposed.xposedbridge.main(xposedbridge.java:117) caused by: android.view.inflateexception: binary xml file line #2: error inflating class android.support.design.widget.coordinatorlayout @ android.view.layoutinflater.createview(layoutinflater.java:633) @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:743) @ android.view.layoutinflater.inflate(layoutinflater.java:482) @ de.robv.android.xposed.xposedbridge.invokeoriginalmethodnative(native method) @ de.robv.android.xposed.xposedbridge.handlehookedmethod(xposedbridge.java:684) @ android.view.layoutinflater.inflate(unknown source) @ android.view.layoutinflater.inflate(layoutinflater.java:414) @ android.view.layoutinflater.inflate(layoutinflater.java:365) @ com.android.internal.policy.impl.phonewindow.setcontentview(phonewindow.java:428) @ android.app.activity.setcontentview(activity.java:2144) @ com.mycompany.test.activities.friends_list_activity.oncreate(friends_list_activity.java:26) @ android.app.activity.performcreate(activity.java:5933) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1105) @ android.app.activitythread.performlaunchactivity(activitythread.java:2282) at android.app.activitythread.handlelaunchactivity(activitythread.java:2389) at android.app.activitythread.access$900(activitythread.java:147) at android.app.activitythread$h.handlemessage(activitythread.java:1296) at android.os.handler.dispatchmessage(handler.java:102) at android.os.looper.loop(looper.java:135) at android.app.activitythread.main(activitythread.java:5254) at java.lang.reflect.method.invoke(native method) at java.lang.reflect.method.invoke(method.java:372) at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:898) at com.android.internal.os.zygoteinit.main(zygoteinit.java:693) at de.robv.android.xposed.xposedbridge.main(xposedbridge.java:117)
edit: hiding actionbar on recyclerview/listview onscroll in guide above can't use code, need extend activity unable use getsupportactionbar()
edit 2.0:
my activity:
public class contacts_list_activity extends activity { private searchview msearchview; private contacts_list_adapter_obj contactsadapter; private menu menu; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_contacts_list); contactsadapter = new contacts_list_adapter_obj(this); final listview listview = (listview) findviewbyid(r.id.contacts); listview.setadapter(contactsadapter); } @override public boolean oncreateoptionsmenu(final menu menu) { this.menu = menu; menuinflater inflater = getmenuinflater(); inflater.inflate(r.menu.menu_contact_list_screen, menu); msearchview = (searchview) menu.finditem(r.id.search).getactionview(); msearchview.setonquerytextlistener(new searchview.onquerytextlistener() { @override public boolean onquerytextsubmit(string s) { return false; } @override public boolean onquerytextchange(string s) { contacts_list_adapter_obj filteradapter = contactsadapter; if (textutils.isempty(s)) { filteradapter.getfilter().filter(""); } else { filteradapter.getfilter().filter(s.tolowercase()); } return true; } }); msearchview.setonsearchclicklistener(new view.onclicklistener() { @override public void onclick(view v) { set_menuitem_visible(false); } }); msearchview.setoncloselistener(new searchview.oncloselistener() { @override public boolean onclose() { set_menuitem_visible(true); return false; } }); final menuitem searchmi = menu.finditem(r.id.search); msearchview.setonquerytextfocuschangelistener(new view.onfocuschangelistener() { @override public void onfocuschange(view view, boolean querytextfocused) { if (!querytextfocused) { searchmi.collapseactionview(); } } }); return true; } }
this tried xml layout , works :
public class mainactivity extends appcompatactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); }
the issue in case seems base activity. extend contacts_list_activity appcompatactivity
updated layout - adding app:layout_scrollflags="scroll|enteralways" toolbar , app:layout_behavior="@string/appbar_scrolling_view_behavior" listview
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.coordinatorlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/coordinatorlayout" android:layout_width="match_parent" android:layout_height="match_parent"> <listview android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior" android:id="@+id/flist" /> <android.support.design.widget.appbarlayout android:id="@+id/appbarlayout" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.toolbar android:id="@+id/toolbar" android:layout_width="match_parent" app:layout_scrollflags="scroll|enteralways" android:layout_height="?attr/actionbarsize" android:background="?attr/colorprimary"/> </android.support.design.widget.appbarlayout> <android.support.v4.view.viewpager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent"/> </android.support.design.widget.coordinatorlayout>
Comments
Post a Comment