6

I'm working on application that has a tab structure, and use sliding movements to move through the tabs.

But now, I want to apply Drawer Layout. The problem is that the Drawer has slide to open events. How I can delete this event? My idea was that the Drawer only could open and close with a button. Is this possible? Thanks!

pgarriga
  • 610
  • 3
  • 8
  • 22

4 Answers4

25

Just write

drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

to prevent menu from listening to gesture

and use openDrawer and closeDrawer to change menu visibility

Maxim Efimov
  • 2,747
  • 1
  • 19
  • 25
16

By default the DrawerLayout is initially hidden from the view unless you put a code to open the Drawer, by the time there is a sliding event triggered.

From the Navigation Drawer example, the contain content_frame is used to dynamically display views inside the Drawer using fragments.

  <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </FrameLayout>

From the Fragment's onCreateView() you can include a button somewhere that has OnClickListener where in you put this code,

   //For me a better way in avoiding a `null pointer` in getting the DrawerLayout
   final DrawerLayout drawer = (DrawerLayout) getActivity().findViewById(R.id.drawer_layout);
   btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                            //Opens the Drawer
                drawer.openDrawer(Your View, Usually a ListView);
            }

                return false;
        });

You Can also use* to close the drawer.

drawer.closeDrawer(Your View, Usually a ListView);
rahstame
  • 2,148
  • 4
  • 23
  • 53
  • 2
    This worked for me. I did want to show the ActionBar. So I hide it, added a button to main layout and implemeneted openDrawer and closeDrawer methods. thanks @lordzden – V A Aug 23 '13 at 07:49
  • 2
    What do u mean by this listView in 'drawer.openDrawer(Your View, Usually a ListView);' @lordzden – Sazzad Hissain Khan Nov 16 '13 at 17:42
1

you can write this way

 mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            drawer.openDrawer(navigationView);

        }
    });
0

If you want to navigate between drawer item on click of button inside your fragments, you can use this

((YourMainActivity)getActivity()).selectItem(position);
duggu
  • 37,851
  • 12
  • 116
  • 113