How to open Drawer Layout only with button?

39,398

Solution 1

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

Solution 2

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);

Solution 3

you can write this way

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

            drawer.openDrawer(navigationView);

        }
    });
Share:
39,398
pgarriga
Author by

pgarriga

Android and AngularJS senior developer. Love Heavy metal, tv shows and videogames.

Updated on July 30, 2022

Comments

  • pgarriga
    pgarriga almost 2 years

    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!