Passa ai contenuti principali

Android Studio - Selezione della voce di menu in Navigation Drawer

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:
<group android:checkableBehavior="single">
<!--inserire qui i vari elementi che compongono il menu-->
</group>
praticamente viene definito un gruppo di elementi a singola scelta.

Ecco come si presenta il file menu_drawer.xml
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_elemento1"
android:title="Elemento 1"/>
<item
android:id="@+id/nav_elemento2"
android:title="Elemento 2"/>
<item
android:id="@+id/nav_elemento3"
android:title="Elemento 3"/>
</group>
</menu>


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:
navView.setCheckedItem(id_elemento)
Ecco un esempio pratico:
Ecco come si presenta il file menu_drawer.xml
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_elemento1"
android:title="Elemento 1"/>
<item
android:id="@+id/nav_elemento2"
android:title="Elemento 2"/>
<item
android:id="@+id/nav_elemento3"
android:title="Elemento 3"/>
</group>
</menu>
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()
navView.setCheckedItem(R.id.nav_elemento1)
Ecco come si presenta il file MainActivity.kt
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:
navView.setCheckedItem(R.id.nav_elemento2)
Il risultato è il seguente


Ecco un video dimostrativo

Download Project
Download file APK


Commenti

Post popolari in questo blog

Android Studio - Impostare lingua app

In questo articolo vedremo come poter selezionare la lingua all'interno della nostra app. Nel precedente articolo in cui si parlava del file string.xml , la lingua dell'app veniva selezionata automaticamente in base alle impostazioni del dispositivo, mentre qui vedremo come poter selezionare a proprio piacimento la lingua che dovrà avere la nostra app indipendentemente dall'impostazione del dispositivo. Per prima cosa creare il layout Ecco un esempio do come può essere il file activity_main.xml Ora creare le stringhe di testo all'interno del file string.xml Ora creare la traduzione del file string.xml nelle varie lingua come descritto in questo articolo Il risultato sarà una serie di file string.xml delle varie lingue impostate. Ora queste di seguito sono tre funzioni che servono per: selezione della lingua salvataggio della selezione nelle preferenze dell'app caricamento della lingua quando si avvia l'app Ecco come si presenta il file Main...

Android Studio - Rinominare il progetto

Rinominare il progetto Android Studio ATTENZIONE!: non eseguire questa procedura se l'app è stata pubblicata su Google Play Store Quando si vuole cambiare nome al progetto: nome cartella in cui è contenuto il progetto package name bisogna eseguire questi passaggi: Andare nella cartella dove è contenuto il progetto Creare una copia del progetto in questione Rinominare la cartella copiata con il nome dell'app (non usare spazi tra le parole) Ora è necessario dire ad Android Studio il nome del nuovo progetto  Aprire Android Studio Aprire il progetto creato in precedenza Una volta caricato il progetto cliccare Build Cliccare Clean Project Attendere che venga eseguito il processo di "pulitura" Cliccare ancora su Build Cliccare su Rebuild Project Attendere che venga ricostruito il progetto Ora aprire la cartella app fino a visualizzare la cartella java Cliccare sull'ingranaggio  Deselezionare la voce Compact Middle Packa...

Arduino - Lettura tensione potenziometro e display LCD

Leggere il valore di un poteziometro (parte 2) Oggi vedremo come leggere il valore in tensione di un potenziometro collegato al pin Analogico A0 di Arduino.