Skip to content

Commit 1f10e0b

Browse files
imhappidsn5ft
authored andcommitted
[NavigationDrawer] Update demos to close drawers on esc key press and add guidance in docs
PiperOrigin-RevId: 780327427
1 parent f300ba0 commit 1f10e0b

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

catalog/java/io/material/catalog/navigationdrawer/CustomNavigationDrawerDemoActivity.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import android.os.Bundle;
2626
import androidx.appcompat.app.ActionBarDrawerToggle;
2727
import androidx.appcompat.widget.Toolbar;
28+
import android.view.KeyEvent;
2829
import android.view.LayoutInflater;
2930
import android.view.View;
3031
import android.view.ViewGroup;
@@ -36,6 +37,7 @@
3637
import androidx.annotation.NonNull;
3738
import androidx.annotation.Nullable;
3839
import androidx.annotation.RequiresApi;
40+
import androidx.core.view.GravityCompat;
3941
import androidx.drawerlayout.widget.DrawerLayout;
4042
import androidx.drawerlayout.widget.DrawerLayout.LayoutParams;
4143
import androidx.drawerlayout.widget.DrawerLayout.SimpleDrawerListener;
@@ -192,4 +194,15 @@ public void onBackCancelled() {
192194
}
193195
};
194196
}
197+
198+
@Override
199+
public boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
200+
if (keyCode == KeyEvent.KEYCODE_ESCAPE
201+
&& (drawerLayout.isDrawerOpen(GravityCompat.START)
202+
|| drawerLayout.isDrawerOpen(GravityCompat.END))) {
203+
drawerLayout.closeDrawers();
204+
return true;
205+
}
206+
return super.onKeyDown(keyCode, keyEvent);
207+
}
195208
}

catalog/java/io/material/catalog/navigationdrawer/NavigationDrawerDemoActivity.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.os.Bundle;
2222
import androidx.appcompat.app.ActionBarDrawerToggle;
2323
import androidx.appcompat.widget.Toolbar;
24+
import android.view.KeyEvent;
2425
import android.view.LayoutInflater;
2526
import android.view.View;
2627
import android.view.ViewGroup;
@@ -123,6 +124,17 @@ private void initNavigationView(NavigationView navigationView) {
123124
});
124125
}
125126

127+
@Override
128+
public boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
129+
if (keyCode == KeyEvent.KEYCODE_ESCAPE
130+
&& (drawerLayout.isDrawerOpen(GravityCompat.START)
131+
|| drawerLayout.isDrawerOpen(GravityCompat.END))) {
132+
drawerLayout.closeDrawers();
133+
return true;
134+
}
135+
return super.onKeyDown(keyCode, keyEvent);
136+
}
137+
126138
@Override
127139
protected boolean shouldShowDefaultDemoActionBar() {
128140
return false;

docs/components/NavigationDrawer.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,21 @@ optional but recommended.
494494
For more information on content labels, go to the
495495
[Android accessibility help guide](https://support.google.com/accessibility/android/answer/7158690).
496496

497+
Important: Ensure that there is a way to close the navigation drawer through
498+
keyboard navigation by listening for the `esc` key in your activity and closing
499+
open drawers.
500+
501+
```java
502+
@Override
503+
public boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
504+
if (keyCode == KeyEvent.KEYCODE_ESCAPE && drawerLayout.isDrawerOpen(navigationView)) {
505+
drawerLayout.closeDrawer(navigationView);
506+
return true;
507+
}
508+
return super.onKeyDown(keyCode, keyEvent);
509+
}
510+
```
511+
497512
</details>
498513

499514
<details>

0 commit comments

Comments
 (0)