Passa ai contenuti principali

Android Studio - ActionBar: nascondere alcune voci in OptionMenu

In questo articolo vedremo come è possibile nascondere una o più voci all'interno dell'OptionMenu.

ESEMPIO 1:
In questo esempio vedremo come nascondere/visualizzare voci all'interno dell'OptionMenu quando si clicca su un pulsante.
per prima cosa occorre definire una variabile di tipo Menu in modo da poter utilizzare il menu nel resto del codice
//variabile di tipo Menu per poter modificare il contenuto dell'OptionMenu tramite codice
private var mymenu: Menu? = null
view raw hs_menuItem1.kt hosted with ❤ by GitHub
poi all'interno della funzione onCreateOptionsMenu occorre aggiungere queesta riga di codice in modo da associare il Menu alla variabile appena creata
//associazione del menu alla variabile mymenu
this.mymenu=menu
view raw hs_menuItem2.kt hosted with ❤ by GitHub
per nascondere una voce occorre inserire questa riga di codice
//mymenu è la variabile associata al Menu, mentre action_three è l'id dell'elemento all'interno del menu da nascondere
mymenu!!.findItem(R.id.action_three).isVisible = false
view raw hs_menuItem3.kt hosted with ❤ by GitHub
per visualizzare una voce occorre inserire questa riga di codice
//mymenu è la variabile associata al Menu, mentre action_three è l'id dell'elemento all'interno del menu da visualizzare
mymenu!!.findItem(R.id.action_three).isVisible = true
view raw hs_menuItem4.kt hosted with ❤ by GitHub
Ecco come si presenta il file menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_one"
android:title="Elemento 1"/>
<item
android:id="@+id/action_two"
android:title="Elemento 2"/>
<item
android:id="@+id/action_three"
android:title="Elemento 3"/>
<item
android:id="@+id/action_four"
android:title="Elemento 4"/>
</menu>
Ecco come si presenta il file MainActivity.kt
package com.dm.tutorialactionbar4
import androidx.appcompat.app.AppCompatActivity
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 kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private var bn: Int? = 0
//variabile di tipo Menu per poter modificare il contenuto dell'OptionMenu tramite codice
private var mymenu: Menu? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onResume() {
super.onResume()
button.setOnClickListener {
if(bn == 0)
{
//con queste righe di codice si nasconde la voce di menu specificata
//mymenu è la variabile associata al Menu, mentre action_three è l'id dell'elemento all'interno del menu da nascondere
mymenu!!.findItem(R.id.action_three).isVisible = false
mymenu!!.findItem(R.id.action_four).isVisible = false
bn = 1
button.text = "Visualizza elementi"
}
else
{
//con queste righe di codice si visualizza la voce di menu specificata
//mymenu è la variabile associata al Menu, mentre action_three è l'id dell'elemento all'interno del menu da visualizzare
mymenu!!.findItem(R.id.action_three).isVisible = true
mymenu!!.findItem(R.id.action_four).isVisible = true
bn = 0
button.text = "Nascondi elementi"
}
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
//Questo permette di aggiunge elementi alla barra delle azioni se è presente.
menuInflater.inflate(R.menu.menu, menu)
//associazione del menu alla variabile mymenu
this.mymenu=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 -> {
Toast.makeText(this, "Elemento 1 premuto", 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()
}
R.id.action_four -> {
Toast.makeText(this, "Elemento 4 premuto", Toast.LENGTH_LONG).show()
}
else -> super.onOptionsItemSelected(item)
}
return true
}
}
view raw hs_menuItem5.kt hosted with ❤ by GitHub


Download Project
Download file APK


ESEMPIo 2:
In questo esempio vedremo come nascondere voci all'interno dell'OptionMenu quando si avvia l'app.
Il principio di funzionamento è simile a quello visto in precedenza in quanto la riga di codice da inserire per nascondere una voce all'interno dell'OptionMenu è la seguente
//mymenu è la variabile associata al Menu, mentre action_three è l'id dell'elemento all'interno del menu da nascondere
mymenu!!.findItem(R.id.action_three).isVisible = false
view raw hs_menuItem3.kt hosted with ❤ by GitHub
la differenza sta nell'inserire la riga di codice all'interno della funzione onCreateOptionsMenu in modo che quando viene creato l'OptionMenu verranno nascoste le voci che sono state definite con quella riga di codice.
Il file menu.xml è identico a quello dell'esempio 1
Ecco come si presenta il file MainActivity.kt
package com.dm.tutorialactionbar5
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu //Importazione della Classe: Menu
import android.view.MenuItem //Importazione della Classe: MenuItem
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
//Questo permette di aggiunge elementi alla barra delle azioni se è presente.
menuInflater.inflate(R.menu.menu, menu)
/*menu è la variabile della funzione onCreateOptionsMenu associata al Menu,
mentre action_three è l'id dell'elemento all'interno del menu da nascondere*/
menu.findItem(R.id.action_three).isVisible = false
menu.findItem(R.id.action_four).isVisible = false
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 -> {
Toast.makeText(this, "Elemento 1 premuto", 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()
}
R.id.action_four -> {
Toast.makeText(this, "Elemento 4 premuto", Toast.LENGTH_LONG).show()
}
else -> super.onOptionsItemSelected(item)
}
return true
}
}
view raw hs_menuItem6.kt hosted with ❤ by GitHub


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.