How to open Drawer Layout only with button?
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);
}
});
pgarriga
Android and AngularJS senior developer. Love Heavy metal, tv shows and videogames.
Updated on July 30, 2022Comments
-
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!