Navigation Drawer

strings.xml

<string name="Open_navigation_drawer">Open Navigation Drawer</string>
<string name="Close_navigation_drawer">Close Navigation Drawer</string>


sidemenu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:id="@+id/Category1"
android:checkableBehavior="single">

<item
android:id="@+id/home"
android:icon="@drawable/home"
android:title="Home" />

<item
android:id="@+id/setting"
android:icon="@drawable/settings"
android:title="Setting" />

<item
android:id="@+id/about"
android:icon="@drawable/info"
android:title="About" />

<item
android:id="@+id/category2"
android:title="Other">

<menu>
<item
android:id="@+id/fav"
android:icon="@drawable/favorite"
android:title="Favourite" />

<item
android:id="@+id/item2"
android:icon="@drawable/emoji"
android:title="Item1" />

<item
android:id="@+id/exit"
android:icon="@drawable/exit"
android:title="Exit" />

</menu>
</item>
</group>
</menu>


Activity_navigation.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start"
tools:context=".NavigationActivity">

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/primary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:title="Navigation Drawer"
tools:ignore="MissingConstraints" />

</androidx.constraintlayout.widget.ConstraintLayout>

<com.google.android.material.navigation.NavigationView
android:id="@+id/navigationView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:theme="@style/navigationTheme"
app:headerLayout="@layout/header"
app:menu="@menu/sidemenu"/>

</androidx.drawerlayout.widget.DrawerLayout>


NavigationActivity.java

public class NavigationActivity extends AppCompatActivity {
DrawerLayout drawerLayout;
Toolbar toolbar;
NavigationView navigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navigation);

//Define IDs
drawerLayout = findViewById(R.id.drawerLayout);
navigationView = findViewById(R.id.navigationView);
toolbar = findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.Open_navigation_drawer, R.string.Close_navigation_drawer);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();

navigationView.setCheckedItem(R.id.home);

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {

int id = item.getItemId();

if (id == R.id.home) {
Intent intent = new Intent(NavigationActivity.this, NavigationActivity.class);
startActivity(intent);

} else if (id == R.id.setting) {
Toast.makeText(NavigationActivity.this, "Setting", Toast.LENGTH_SHORT).show();

} else if (id == R.id.about) {
Toast.makeText(NavigationActivity.this, "About", Toast.LENGTH_SHORT).show();

} else if (id == R.id.fav) {
Toast.makeText(NavigationActivity.this, "Favourite", Toast.LENGTH_SHORT).show();

} else if (id == R.id.item1) {
Toast.makeText(NavigationActivity.this, "Item1", Toast.LENGTH_SHORT).show();

} else {
finishAffinity();
}

drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
});

}

@Override
public void onBackPressed() {
if(drawerLayout.isDrawerOpen(GravityCompat.START)){
drawerLayout.closeDrawer(GravityCompat.START);
} else{
super.onBackPressed();
}
}

}

Post a Comment

Previous Post Next Post