In questo articolo vedremo come fare in modo che quando clicchiamo su una voce di menù dal menu laterale (Navigation Drawer) questa venga selezionata e rimanga selezionata fino a quando non clicchiamo su un'altra voce.
Vedremo inoltre come selezionare una voce di menu all'avvio dell'app.
Per fare in modo che quando clicchiamo su una voce di menù dal menu laterale questa venga selezionata, occorre inserire questo attributo all'interno del file che gestisce il menu laterale:
praticamente viene definito un gruppo di elementi a singola scelta.
Ecco come si presenta il file menu_drawer.xml
Per fare in modo che quando l'app viene avviata sia già selezionata una voce di menu occorre inserire queste righe di codice:
Ecco un esempio pratico:
Ecco come si presenta il file menu_drawer.xml
Ecco la riga di codice che permette di selezionare la voce di menu all'avvio dell'app; questa riga deve essere inserita subito dopo la dichiarazione del NavigiationView all'interno della funzione onCreate()
Ecco come si presenta il file MainActivity.kt
Se proviamo a modificare la riga 32 in questo modo:
Il risultato è il seguente
Ecco un video dimostrativo
Vedremo inoltre come selezionare una voce di menu all'avvio dell'app.
Per fare in modo che quando clicchiamo su una voce di menù dal menu laterale questa venga selezionata, occorre inserire questo attributo all'interno del file che gestisce il menu laterale:
Ecco come si presenta il file menu_drawer.xml
Download Project | ![]() |
Download file APK | ![]() |
Per fare in modo che quando l'app viene avviata sia già selezionata una voce di menu occorre inserire queste righe di codice:
Ecco come si presenta il file menu_drawer.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.dm.tutorialdrawer5 | |
import androidx.appcompat.app.AppCompatActivity | |
import android.os.Bundle | |
import android.view.MenuItem | |
import android.widget.Toast | |
import androidx.appcompat.app.ActionBarDrawerToggle //Importazione della Classe: ActionBarDrawerToggle | |
import androidx.core.view.GravityCompat //Importazione della Classe: GravityCompat | |
import androidx.drawerlayout.widget.DrawerLayout //Importazione della Classe: DrawerLayout | |
import com.google.android.material.navigation.NavigationView //Importazione della Classe: NavigationView | |
import androidx.appcompat.widget.Toolbar //Importazione della Classe: Toolbar | |
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
setContentView(R.layout.activity_main) | |
val toolbar: Toolbar = findViewById(R.id.toolbar) | |
setSupportActionBar(toolbar) | |
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) | |
val navView: NavigationView = findViewById(R.id.nav_view) | |
val toggle = ActionBarDrawerToggle( | |
this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close | |
) | |
drawerLayout.addDrawerListener(toggle) | |
toggle.syncState() | |
navView.setNavigationItemSelectedListener(this) | |
navView.setCheckedItem(R.id.nav_elemento1) | |
} | |
//funzione che gestisce il click del tasto indietro del dispositivo | |
override fun onBackPressed() { | |
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) | |
//se il menu laterale (Drawer) è aperto | |
if (drawerLayout.isDrawerOpen(GravityCompat.START)) | |
{ | |
//chiude il Drawer | |
drawerLayout.closeDrawer(GravityCompat.START) | |
} | |
else | |
{ | |
//chiude l'applicazione | |
super.onBackPressed() | |
} | |
} | |
//funzione che gestisce il click degli elementi che compongono il menu laterale | |
override fun onNavigationItemSelected(item: MenuItem): Boolean { | |
when (item.itemId) { | |
R.id.nav_elemento1 -> { | |
Toast.makeText(this, "Elemento 1", Toast.LENGTH_SHORT).show() | |
} | |
R.id.nav_elemento2 -> { | |
Toast.makeText(this, "Elemento 2", Toast.LENGTH_SHORT).show() | |
} | |
R.id.nav_elemento3 -> { | |
Toast.makeText(this, "Elemento 3", Toast.LENGTH_SHORT).show() | |
} | |
} | |
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) | |
drawerLayout.closeDrawer(GravityCompat.START) | |
return true | |
} | |
} |
Se proviamo a modificare la riga 32 in questo modo:
Ecco un video dimostrativo
Download Project | ![]() |
Download file APK | ![]() |
Commenti
Posta un commento