Android custom navigation drawer menu item with SwitchCompat
This post will walk you through how to create a custom menu item in the navigation drawer menu, with a toggle on and off button on the right using app:actionLayout and a custom layout with SwitchCompat.
1. Create an sample android app from the Android Studio and choose navigation drawer as your default template.
2. Create a layout file action_view_switch.xml
3. Replace the content in the res/menu/activity_main_drawer.xml with the following
4. Add a class field in MainActivity.java
private SwitchCompat switcher;
5. Add the following code in the onCreate method in MainActivity.java
Menu menu = navigationView.getMenu();
MenuItem menuItem = menu.findItem(R.id.nav_switch);
View actionView = MenuItemCompat.getActionView(menuItem);
switcher = (SwitchCompat) actionView.findViewById(R.id.switcher);
switcher.setChecked(true);
switcher.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar.make(v, (switcher.isChecked()) ? "is checked!!!" : "not checked!!!", Snackbar.LENGTH_SHORT).setAction("Action", null).show();
}
});
6. Replace the code in onNavigationItemSelected in MainActivity.java with the following.
int id = item.getItemId();
if (id == R.id.nav_camera) {
// Handle the camera action
} else if (id == R.id.nav_switch) {
switcher.setChecked(!switcher.isChecked());
Snackbar.make(item.getActionView(), (switcher.isChecked()) ? "is checked" : "not checked", Snackbar.LENGTH_SHORT).setAction("Action", null).show();
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
7. Run the app, open the navigation drawer menu, you should see the second item on the menu has a toggle on off button on the right.
Complete example in Github
References:
https://github.com/codepath/android_guides/wiki/Fragment-Navigation-Drawer
http://stackoverflow.com/questions/37361091/android-something-like-navigation-drawer-with-custom-filling
Search within Codexpedia
Search the entire web