Tuesday, 15 May 2012

android - Navigation Drawer not sliding -



android - Navigation Drawer not sliding -

i have implemented navigation drawer programmatically. while else works when click in upper left icon screen darkens (the animation when drawer indeed slides in) drawer not slide @ all.

here code.

public class mainactivity extends activity { private static final string tag = "main_activity"; private drawerlayout mdrawerlayout; public static arraylist<string> moptions=new arraylist<string>(); // listview represents navigation drawer private listview mdrawerlist; private actionbardrawertoggle mdrawertoggle; private charsequence mtitle; private mainactivitylayout mainactivitylayout; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); mainactivitylayout=new mainactivitylayout(this,null); setcontentview(mainactivitylayout);//changed moptions.add("search"); moptions.add("inbox"); moptions.add("shout-a-loud"); moptions.add("saved profiles"); moptions.add("profile viewers");// premium feature. display profile views not viewers. moptions.add("settings"); moptions.add("app info"); mdrawerlayout=(drawerlayout) mainactivitylayout;//this changed mdrawerlist=(listview) new listviewcustom(this,null); arrayadapter<string> adapter = new arrayadapter<string>(getbasecontext(), r.layout.drawer_list_item, moptions); mdrawerlist.setadapter(adapter); mdrawerlist.setonitemclicklistener(new draweritemclicklistener()); getactionbar().setdisplayhomeasupenabled(true); getactionbar().sethomebuttonenabled(true); mdrawertoggle = new actionbardrawertoggle( this, mdrawerlayout, r.drawable.ic_drawer, r.string.drawer_open, r.string.drawer_close ) { public void ondrawerclosed(view view) { super.ondrawerclosed(view); mtitle="social geek"; getactionbar().settitle(mtitle); invalidateoptionsmenu(); } public void ondraweropened(view view) { super.ondraweropened(view); mtitle="select"; getactionbar().settitle(mtitle); invalidateoptionsmenu(); // creates phone call onprepareoptionsmenu() } }; mdrawerlayout.setdrawerlistener(mdrawertoggle); getactionbar().setdisplayhomeasupenabled(true); getactionbar().sethomebuttonenabled(true); if (savedinstancestate == null) { selectitem(0); } }

second class

public class mainactivitylayout extends drawerlayout{ static context context; static drawerlayout drawerlayoutcustom; static listviewcustom listviewcustom; public mainactivitylayout(context context,attributeset attr) { super(context,attr); mainactivitylayout.context=context; listviewcustom=new listviewcustom(context,null); layoutparams layoutparams=new layoutparams(layoutparams.match_parent,layoutparams.match_parent); setlayoutparams(layoutparams); addview(listviewcustom); initializeeverything(context, null); }

third class

public class listviewcustom extends listview{ static final int listview_custom=0; public listviewcustom(context context,attributeset attrs) { super(context,attrs); drawerlayout.layoutparams layoutparams= new drawerlayout.layoutparams(240,layoutparams.match_parent); layoutparams.gravity=gravity.start; setbackgroundcolor(111); setdivider(getresources().getdrawable(android.r.color.transparent)); setchoicemode(choice_mode_single); setlayoutparams(layoutparams); } }

i recommend creating custom layout in .xml. doing wrong is, create drawerlayout within listview, , not add together layout. meaning, listview parent, , drawerlayout child, incorrect.

the right approach drawerlayout is parent, , listview child. (meaning, listview needs within drawerlayout).

xml example:

<!--- drawerlayout needed create work --> <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"> <!-- main content view display stuff --> <framelayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- navigation drawer, slide in , out --> <listview android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choicemode="singlechoice" android:divider="@android:color/transparent" android:dividerheight="0dp" android:background="#111"/> </android.support.v4.widget.drawerlayout>

have here well: how create navigationdrawer

android user-interface navigation-drawer slidingdrawer

No comments:

Post a Comment