In questo articolo vedremo come sia possibile modificare una icona all'interno dell'ActionBar tramite codice.
Questa operazione è utile quando si ha una icona nell'ActionBar e deve essere modificata l'icona in base all'operazione che è stata eseguita, ad esempio l'aggiunta di una impostazione ai preferiti: se l'impostazione non è aggiunta ai preferiti si avrà una icona, mentre se si aggiunge l'impostazione ai preferiti l'icona cambierà di conseguenza.
Per prima cosa occorre creare due icone ed inserirle nel progetto come descritto in questo articolo
Una volta create le icone dobbiamo modificare oppure creare il file menu.xml
Alla riga 8 è stata impostata l'icona dei preferiti disattivata mentre,
alla riga 9 è stato impostato l'attributo di visualizzare sempre questa voce di menu
Ora bisogna creare il codice che permette di cambiare icona
Ecco come si presenta il file MainActivity.kt
Ecco un video dimostrativo
Questa operazione è utile quando si ha una icona nell'ActionBar e deve essere modificata l'icona in base all'operazione che è stata eseguita, ad esempio l'aggiunta di una impostazione ai preferiti: se l'impostazione non è aggiunta ai preferiti si avrà una icona, mentre se si aggiunge l'impostazione ai preferiti l'icona cambierà di conseguenza.
Per prima cosa occorre creare due icone ed inserirle nel progetto come descritto in questo articolo
Una volta create le icone dobbiamo modificare oppure creare il file menu.xml
alla riga 9 è stato impostato l'attributo di visualizzare sempre questa voce di menu
Ora bisogna creare il codice che permette di cambiare icona
This file contains hidden or 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
//dichiarazione della variabile ti tipo Menu | |
private var myiconmenu: Menu? = null |
This file contains hidden or 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
//assegnazione del menu alla variabile myiconmenu | |
//all'interno della funzione onCreateOptionsMenu | |
this.myiconmenu = menu |
This file contains hidden or 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
//questo è per poter modificare l'icona | |
//da inserire nell'evento che gestisce il clic della voce di menu | |
myiconmenu!!.getItem(0).setIcon(R.drawable.ic_fav_on) |
This file contains hidden or 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.tutorialactionbartoolbar2 | |
import android.os.Bundle | |
import android.view.Menu //Importazione della Classe: Menu | |
import android.view.MenuItem //Importazione della Classe: MenuItem | |
import android.widget.Toast | |
import androidx.appcompat.app.AppCompatActivity | |
class MainActivity : AppCompatActivity() { | |
//dichiarazione della variabile ti tipo Menu | |
private var myiconmenu: Menu? = null | |
//dichiarazione variabile di tipo Boolean | |
//per verificare lo stato del pulsante in ActionBar | |
private var stateicon: Boolean? = false | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
setContentView(R.layout.activity_main) | |
} | |
override fun onCreateOptionsMenu(menu: Menu): Boolean { | |
// Inflate the menu; questo aggiunge elementi alla barra delle azioni se è presente. | |
menuInflater.inflate(R.menu.menu, menu) | |
//assegnazione del menu alla variabile myiconmenu | |
//all'interno della funzione onCreateOptionsMenu | |
this.myiconmenu = menu | |
return true | |
} | |
override fun onOptionsItemSelected(item: MenuItem): Boolean { | |
// Gestisci i clic degli elementi della barra delle azioni qui. | |
when (item.itemId) { | |
R.id.action_one -> { | |
//se lo stato del pulsante è falso cambia icona ed imposta lo stato pulsante a vero | |
if(stateicon == false) { | |
//questo è per poter modificare l'icona | |
myiconmenu!!.getItem(0).setIcon(R.drawable.ic_fav_on) | |
//altro codice che viene eseguito | |
stateicon = true | |
Toast.makeText(this, "Aggiunto ai preferiti", Toast.LENGTH_LONG).show() | |
} | |
//se lo stato del pulsante è vero cambia icona ed imposta lo stato pulsante a falso | |
else | |
{ | |
//questo è per poter modificare l'icona | |
myiconmenu!!.getItem(0).setIcon(R.drawable.ic_fav_off) | |
//altro codice che viene eseguito | |
stateicon = false | |
Toast.makeText(this, "Rimosso dai preferiti", Toast.LENGTH_LONG).show() | |
} | |
} | |
R.id.action_two -> { | |
Toast.makeText(this, "Elemento 2 premuto", Toast.LENGTH_LONG).show() | |
} | |
R.id.action_three -> { | |
Toast.makeText(this, "Elemento 3 premuto", Toast.LENGTH_LONG).show() | |
} | |
else -> super.onOptionsItemSelected(item) | |
} | |
return true | |
} | |
} |
Ecco un video dimostrativo
Download Project | ![]() |
Download file APK | ![]() |
Visualizza su | ![]() |
Commenti
Posta un commento