Skip to content

Commit 67bd159

Browse files
Material Design Teamdsn5ft
authored andcommitted
[Catalog] Fix initial content description of the navigation drawer toggle in demos
Without calling `syncState()`, the `ActionBarDrawerToggle` defaults to the "Navigate up" description, ignoring the custom "Show navigation drawer" description until the user interacts with the drawer. PiperOrigin-RevId: 853203850
1 parent 33ff7ce commit 67bd159

File tree

2 files changed

+44
-16
lines changed

2 files changed

+44
-16
lines changed

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

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import android.animation.Animator.AnimatorListener;
2222
import android.animation.ValueAnimator.AnimatorUpdateListener;
23+
import android.content.res.Configuration;
2324
import android.os.Build.VERSION;
2425
import android.os.Build.VERSION_CODES;
2526
import android.os.Bundle;
@@ -40,7 +41,6 @@
4041
import androidx.core.view.GravityCompat;
4142
import androidx.drawerlayout.widget.DrawerLayout;
4243
import androidx.drawerlayout.widget.DrawerLayout.LayoutParams;
43-
import androidx.drawerlayout.widget.DrawerLayout.SimpleDrawerListener;
4444
import com.google.android.material.motion.MaterialSideContainerBackHelper;
4545
import com.google.android.material.navigation.DrawerLayoutUtils;
4646
import io.material.catalog.feature.DemoActivity;
@@ -60,6 +60,7 @@ public void handleOnBackPressed() {
6060
@Nullable private OnBackAnimationCallback drawerOnBackAnimationCallback;
6161

6262
private DrawerLayout drawerLayout;
63+
private ActionBarDrawerToggle toggle;
6364
private View currentDrawerView;
6465
private MaterialSideContainerBackHelper sideContainerBackHelper;
6566

@@ -77,25 +78,26 @@ public View onCreateDemoView(
7778
setSupportActionBar(toolbar);
7879

7980
drawerLayout = view.findViewById(R.id.drawer);
80-
drawerLayout.addDrawerListener(
81+
toggle =
8182
new ActionBarDrawerToggle(
8283
this,
8384
drawerLayout,
8485
toolbar,
8586
R.string.cat_navigationdrawer_button_show_content_description,
86-
R.string.cat_navigationdrawer_button_hide_content_description));
87-
drawerLayout.addDrawerListener(
88-
new SimpleDrawerListener() {
87+
R.string.cat_navigationdrawer_button_hide_content_description) {
8988
@Override
90-
public void onDrawerOpened(@NonNull View drawerView) {
89+
public void onDrawerOpened(View drawerView) {
90+
super.onDrawerOpened(drawerView);
9191
registerBackCallback(drawerView);
9292
}
9393

9494
@Override
95-
public void onDrawerClosed(@NonNull View drawerView) {
95+
public void onDrawerClosed(View drawerView) {
96+
super.onDrawerClosed(drawerView);
9697
unregisterBackCallback();
9798
}
98-
});
99+
};
100+
drawerLayout.addDrawerListener(toggle);
99101

100102
View endDrawer = view.findViewById(R.id.custom_drawer_end);
101103
view.findViewById(R.id.show_end_drawer_gravity)
@@ -151,6 +153,18 @@ protected boolean shouldShowDefaultDemoActionBar() {
151153
return false;
152154
}
153155

156+
@Override
157+
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
158+
super.onPostCreate(savedInstanceState);
159+
toggle.syncState();
160+
}
161+
162+
@Override
163+
public void onConfigurationChanged(@NonNull Configuration newConfig) {
164+
super.onConfigurationChanged(newConfig);
165+
toggle.onConfigurationChanged(newConfig);
166+
}
167+
154168
@RequiresApi(VERSION_CODES.UPSIDE_DOWN_CAKE)
155169
private OnBackAnimationCallback createOnBackAnimationCallback() {
156170
return new OnBackAnimationCallback() {

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

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import io.material.catalog.R;
2020

21+
import android.content.res.Configuration;
2122
import android.os.Bundle;
2223
import androidx.appcompat.app.ActionBarDrawerToggle;
2324
import androidx.appcompat.widget.Toolbar;
@@ -30,7 +31,6 @@
3031
import androidx.annotation.Nullable;
3132
import androidx.core.view.GravityCompat;
3233
import androidx.drawerlayout.widget.DrawerLayout;
33-
import androidx.drawerlayout.widget.DrawerLayout.SimpleDrawerListener;
3434
import com.google.android.material.materialswitch.MaterialSwitch;
3535
import com.google.android.material.navigation.NavigationView;
3636
import io.material.catalog.feature.DemoActivity;
@@ -47,6 +47,7 @@ public void handleOnBackPressed() {
4747
};
4848

4949
private DrawerLayout drawerLayout;
50+
private ActionBarDrawerToggle toggle;
5051
private MaterialSwitch autoCloseSwitch;
5152

5253
@NonNull
@@ -64,25 +65,26 @@ public View onCreateDemoView(
6465
setSupportActionBar(toolbar);
6566

6667
drawerLayout = view.findViewById(R.id.drawer);
67-
drawerLayout.addDrawerListener(
68+
toggle =
6869
new ActionBarDrawerToggle(
6970
this,
7071
drawerLayout,
7172
toolbar,
7273
R.string.cat_navigationdrawer_button_show_content_description,
73-
R.string.cat_navigationdrawer_button_hide_content_description));
74-
drawerLayout.addDrawerListener(
75-
new SimpleDrawerListener() {
74+
R.string.cat_navigationdrawer_button_hide_content_description) {
7675
@Override
77-
public void onDrawerOpened(@NonNull View drawerView) {
76+
public void onDrawerOpened(View drawerView) {
77+
super.onDrawerOpened(drawerView);
7878
drawerOnBackPressedCallback.setEnabled(true);
7979
}
8080

8181
@Override
82-
public void onDrawerClosed(@NonNull View drawerView) {
82+
public void onDrawerClosed(View drawerView) {
83+
super.onDrawerClosed(drawerView);
8384
drawerOnBackPressedCallback.setEnabled(false);
8485
}
85-
});
86+
};
87+
drawerLayout.addDrawerListener(toggle);
8688

8789
NavigationView navigationViewStart = view.findViewById(R.id.navigation_view_start);
8890
initNavigationView(navigationViewStart);
@@ -139,4 +141,16 @@ public boolean dispatchKeyEvent(KeyEvent keyEvent) {
139141
protected boolean shouldShowDefaultDemoActionBar() {
140142
return false;
141143
}
144+
145+
@Override
146+
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
147+
super.onPostCreate(savedInstanceState);
148+
toggle.syncState();
149+
}
150+
151+
@Override
152+
public void onConfigurationChanged(@NonNull Configuration newConfig) {
153+
super.onConfigurationChanged(newConfig);
154+
toggle.onConfigurationChanged(newConfig);
155+
}
142156
}

0 commit comments

Comments
 (0)