In questo articolo vedremo come poter inserire una immagine a destra di un elemento di menu in Navigation Drawer.
Inserire l' immagine a sinistra dell'elemento è molto semplice in quanto è sufficiente specificare l'attributo android:icon="nome_immagine" all'interno del file di creazione del menu laterale, ma inserirla a destra dell'elemento non è così immediato.
Per prima cosa occorre creare un file all'interno della cartella layout dal nome menu_image.xml.
Poi occorre creare l'icona da inserire come abbiamo visto in questo articolo
Ecco come si presenta il file menu_image.xml
Come si può vedere alla riga 12 viene impostato come sfondo del layout l'immagine creata specificandone il nome.
Ora all'interno del codice occorre inserire questa riga:
Ecco come si presenta il file MainActivity.kt
Inserire l' immagine a sinistra dell'elemento è molto semplice in quanto è sufficiente specificare l'attributo android:icon="nome_immagine" all'interno del file di creazione del menu laterale, ma inserirla a destra dell'elemento non è così immediato.
Per prima cosa occorre creare un file all'interno della cartella layout dal nome menu_image.xml.
Poi occorre creare l'icona da inserire come abbiamo visto in questo articolo
Ecco come si presenta il file menu_image.xml
Ora all'interno del codice occorre inserire questa riga:
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.tutorialdrawer6 | |
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 - è la variabile associata al NavigationView | |
//getItem(2) - specifica l'elemento all'interno del menu a cui aggiungere l'immagine a destra | |
//setActionView(R.layout.menu_image) - specifica il nome del layout contenente l'immagine da aggiungere all'elemento | |
navView.menu.getItem(2).setActionView(R.layout.menu_image) | |
} | |
//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 | |
} | |
} |
Download Project | ![]() |
Download file APK | ![]() |
Commenti
Posta un commento