In questo articolo vedremo i vari passaggi per aggiungere il Drawer layout ad un progetto esistente che ne è sprovvisto con l'utilizzo delle librerie Android AppCompact con API precedenti a 28 compreso
La procedura per aggiungere il Drawer layout al proprio progetto utilizzando la libreria AndroidX è spiegato in questo articolo.
Ecco il Drawer Layout
I passaggi da fare sono tanti ma non difficili, ecco un riepilogo di cosa di deve fare:
FILE dimens.xml
Se questo file non è presente nel proprio progetto seguire questa guida su come crearlo.
Una volta aperto il file aggiungere queste righe di codice:
Torna all'inizio
FILE styles.xml
Questo file è presente in tutti i progetti che si creano con Android Studio
Una volta aperto il file aggiungere queste righe di codice:
Se si vuole aggiungere uno stile in base alla versione di Android occorre aggiungere il un file styles.xml per versione API come spiegato in questo articolo
Questo è il contenuto del file styles.xml(v21)
Ecco la differenza senza il file styles.xml(v21) a sinistra e con il file styles.xml(v21) a destra
Nelle immagini qui sopra, l'app è installata su Android 8.0
Quello che cambia è la barra di stato in alto, che con il file styles.xml(v21) assume la trasparenza che è stata aggiunta proprio da API 21 in poi. Se non si aggiunge questo file, l'aspetto sarà come quello mostrato nell'immagine a sinistra su tutte le versioni di Android.
Torna all'inizio
FILE strings.xml
Questo file è presente in tutti i progetti che si creano con Android Studio
Una volta aperto il file aggiungere queste righe di codice:
Torna all'inizio
FILE AndroidManifest.xml
Questo file è presente in tutti i progetti il quale contiene le informazioni per poter eseguire l'app come il nome dell'applicazione, l'icona, il tema, le Activity presenti nell'app e molto altro.
Una volta aperto il file aggiungere queste righe di codice all'interno del tag <activity>:
Ecco come si presenta il file AndroidManifest.xml completo
Come si può vedere le righe di codice sono state inserite alla riga 13
Torna all'inizio
FILE build.gradle (Module:app)
Il file build.gradle contiene informazioni importanti come la versione dell'app su quale versione minima di Android può essere eseguita l'applicazione, con quale vesrione di API è stata compilata la propria applicazione e molte altre informazioni.
Una volta aperto il file aggiungere questa riga di codice all'interno di dependencies:
Ecco come si presenta il file build.gradle (Module:app) completo per API fino a 28
Come si può vedere la riga di codice è stata inserita alla riga 29 ma comunque deve essere all'interno di dependencies
Una volta inserita la riga di codice occorre sincronizzare il progetto cliccando su Sync now in alto a destra
ATTENZIONE!: La libreria di Android a partire da API 29 non è più supportata e quindi è necessario utilizzare la libreria AndroidX considerare di convertire i vecchi progetti ad AndroidX dopo aver letto questa guida (in Inglese)
Questo articolo è disponibile anche con l'utilizzo delle librerie AndroidX
Torna all'inizio
FILE menu_drawer.xml
Questo file contiene le voci di menù del Drawer Layout
Questo file deve essere creato all'interno della cartella menu, vedere questo articolo su come creare questa cartella e i file al suo interno.
Una volta aperto il file aggiungere queste righe di codice:
E' possibile personalizzare il menù a proprio piacimento aggiungendo icone a fianco del nome, ecc.
Torna all'inizio
LAYOUT
All'interno della cartella layout bisogna creare tre file per il Drawer Layout:
nav_header_main.xml
Questo file contiene il layout dell’intestazione del menù laterale: solitamente contiene uno sfondo, un logo, ed alcune scritte.
Per creare questo file seguire questi passaggi:
inserire nel campo Root element: il nome della View principale: LinearLayout
Premere il pulsante OK per confermare, verrà creato un file dove al suo interno occorre creare il layout dell'intestazione del Drawer Layout, occorre modificare la View LinearLayout sostituendo l'attributo
con questo attributo
In questo modo viene specificata l'altezza dell'intestazione facendo riferimento al file dimens.xml poi, al LinearLayout vanno aggiunti questi attributi in modo da personalizzarlo ulteriormente
Ecco come si presenta il file nav_header_main.xml
app_bar_main.xml
Questo file raggruppa la toolbar con il contenuto principale dell’app che sarà all'interno del file content_main.xml che vedremo successivamente.
Per creare questo file seguire questi passaggi:
inserire nel campo Root element: il nome della View principale: CoordinatorLayout
Premere il pulsante OK per confermare, verrà creato un file dove all'interno del tag CoordinatorLayout vanno aggiunti questi attributi
Poi dopo il tag CoordinatorLayout aggiungere queste righe di codice:
Ecco come si presenta il file app_bar_main.xml
Verrà segnalato un errore in corrispondenza della riga 23 in quanto il layout content_main non è stato ancora creato.
content_main.xml
Questo file è l'ultimo da creare in quanto conterrà il layout principale della nostra app; quindi sarà necessario spostare tutto il contenuto del file activity_main.xml all'interno di questo.
Per creare questo file seguire questi passaggi:
inserire nel campo Root element: il nome della View principale: qualsiasi cosa va bene in quanto poi verrà sostituito dal contenuto di activity_main.xml
Premere il pulsante OK per confermare quindi
Ecco come si presenta il file content_main.xml
Torna all'inizio del paragrafo
Torna all'inizio
activity_main.xml
Il file activity_main.xml è quello che viene caricato quando si apre l'app ed è importante che contenga queste righe di codice:
Ora se provassimo ad eseguire l'app sull'emulatore vedremmo un risultato di questo tipo
Come si può vedere l'app viene eseguita correttamente ma non è presente il titolo nell'ActionBar e nemmeno il classico tasto con 3 linee orizzontali per aprire il menù laterale, ma trascinando con il dito dal lato sinistro dello schermo verso destra vediamo comparire il menù laterale. Quindi a questo punto è necessario passare alla scrittura del codice all'interno del file MainActivity.kt
Torna all'inizio del paragrafo
Torna all'inizio
MainActivity.kt
All'interno del file MainActivity.kt è necessario modificare la classe MainActivity e aggiungere alcune righe di codice all'interno della funzione onCreate per inizializzare l'ActionBar e il Drawer Layout, dopo bisogna aggiungere alcune funzioni che permettono di aprire e chiudere il menù laterale e gestire il click sui vari elementi che compongono il menù laterale.
La classe MainActivity che si ha in un progetto che non è provvisto del menù laterale ha la seguente sintassi:
quindi va modificata in questo modo:
modificando la classe MainActivity in questo modo verrà segnalato un errore perché è necessario importare la Classe NavigationView in questo modo:
Dopo aver implementato la classe NavigationView verrà segnalato un errore sulla classe MainActivity perchè manca l'implementazione della funzione onNavigationItemSelected() quindi bisogna aggiungere questa funzione al di fuori della funzione onCreate()
Quindi al suo interno vanno inserite le righe di codice per poter eseguire determinate funzioni quando si clicca sull'elemento più altre righe di codice per gestire la chiusura del menù laterale in questo modo:
aggiungere anche la riga di codice che permette di importare la Classe GravityCompat e la Classe DrawerLayout in questo modo:
All'interno della funzione onCreate() è necessario aggiungere queste righe di codice:
aggiungere anche la riga di codice che permette di importare la Classe Toolbar
All'interno della funzione onCreate() è necessario aggiungere queste righe di codice:
aggiungere anche la riga di codice che permette di importare la Classe ActionBarDrawerToggle
Ora è necessario aggiungere o modificare la funzione onBackPressed()
Questo permette di chiudere il menù laterale se è aperto oppure chiudere l'app se il menù laterale è chiuso.
Ecco come si presenta il file MainActivity.kt
Ecco un video dimostrativo
La procedura per aggiungere il Drawer layout al proprio progetto utilizzando la libreria AndroidX è spiegato in questo articolo.
Ecco il Drawer Layout
I passaggi da fare sono tanti ma non difficili, ecco un riepilogo di cosa di deve fare:
- Creare/modificare il file dimens.xml
- Modificare il file styles.xml
- Modificare il file strings.xml
- Modificare il file AndroidManifest.xml
- Modificare il file build.gradle (Module:app)
- Creare il file menu_drawer.xml all'interno della cartella menu
- Creare alcuni file all'interno della cartella layout
- Modificare il file activity_main.xml
- Modificare il codice all'interno del file MainActivity.kt
FILE dimens.xml
Se questo file non è presente nel proprio progetto seguire questa guida su come crearlo.
Una volta aperto il file aggiungere queste righe di codice:
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
<dimen name="activity_horizontal_margin">16dp</dimen> | |
<dimen name="activity_vertical_margin">16dp</dimen> | |
<dimen name="nav_header_vertical_spacing">8dp</dimen> | |
<dimen name="nav_header_height">176dp</dimen> |
Torna all'inizio
FILE styles.xml
Questo file è presente in tutti i progetti che si creano con Android Studio
Una volta aperto il file aggiungere queste righe di codice:
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
<!--Tema del Drawer layout--> | |
<style name="AppTheme.NoActionBar"> | |
<item name="windowActionBar">false</item> | |
<item name="windowNoTitle">true</item> | |
</style> | |
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/> | |
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/> |
Questo è il contenuto del file styles.xml(v21)
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
<?xml version="1.0" encoding="utf-8"?> | |
<resources> | |
<style name="AppTheme.NoActionBar"> | |
<item name="windowActionBar">false</item> | |
<item name="windowNoTitle">true</item> | |
<item name="android:statusBarColor">@android:color/transparent</item> | |
</style> | |
</resources> |
Nelle immagini qui sopra, l'app è installata su Android 8.0
Quello che cambia è la barra di stato in alto, che con il file styles.xml(v21) assume la trasparenza che è stata aggiunta proprio da API 21 in poi. Se non si aggiunge questo file, l'aspetto sarà come quello mostrato nell'immagine a sinistra su tutte le versioni di Android.
Torna all'inizio
FILE strings.xml
Questo file è presente in tutti i progetti che si creano con Android Studio
Una volta aperto il file aggiungere queste righe di codice:
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
<string name="navigation_drawer_open">Apri menu laterale</string> | |
<string name="navigation_drawer_close">Chiudi menu laterale</string> |
Torna all'inizio
FILE AndroidManifest.xml
Questo file è presente in tutti i progetti il quale contiene le informazioni per poter eseguire l'app come il nome dell'applicazione, l'icona, il tema, le Activity presenti nell'app e molto altro.
Una volta aperto il file aggiungere queste righe di codice all'interno del tag <activity>:
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
android:label="@string/app_name" | |
android:theme="@style/AppTheme.NoActionBar" |
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
<?xml version="1.0" encoding="utf-8"?> | |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
package="com.dm.tutorialadddrawer"> | |
<application | |
android:allowBackup="true" | |
android:icon="@mipmap/ic_launcher" | |
android:label="@string/app_name" | |
android:roundIcon="@mipmap/ic_launcher_round" | |
android:supportsRtl="true" | |
android:theme="@style/AppTheme"> | |
<activity android:name=".MainActivity" | |
android:label="@string/app_name" | |
android:theme="@style/AppTheme.NoActionBar"> | |
<intent-filter> | |
<action android:name="android.intent.action.MAIN" /> | |
<category android:name="android.intent.category.LAUNCHER" /> | |
</intent-filter> | |
</activity> | |
</application> | |
</manifest> |
Torna all'inizio
FILE build.gradle (Module:app)
Il file build.gradle contiene informazioni importanti come la versione dell'app su quale versione minima di Android può essere eseguita l'applicazione, con quale vesrione di API è stata compilata la propria applicazione e molte altre informazioni.
Una volta aperto il file aggiungere questa riga di codice all'interno di dependencies:
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
implementation 'com.android.support:design:28.0.0' |
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
apply plugin: 'com.android.application' | |
apply plugin: 'kotlin-android' | |
apply plugin: 'kotlin-android-extensions' | |
android { | |
compileSdkVersion 28 | |
defaultConfig { | |
applicationId "com.dm.tutorialemptyactivity" | |
minSdkVersion 16 | |
targetSdkVersion 28 | |
versionCode 1 | |
versionName "1.0" | |
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" | |
} | |
buildTypes { | |
release { | |
minifyEnabled false | |
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' | |
} | |
} | |
} | |
dependencies { | |
implementation fileTree(dir: 'libs', include: ['*.jar']) | |
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" | |
implementation 'com.android.support:appcompat-v7:28.0.0' | |
implementation 'com.android.support:design:28.0.0' | |
implementation 'com.android.support.constraint:constraint-layout:1.1.3' | |
testImplementation 'junit:junit:4.12' | |
androidTestImplementation 'com.android.support.test:runner:1.0.2' | |
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' | |
} |
Una volta inserita la riga di codice occorre sincronizzare il progetto cliccando su Sync now in alto a destra
ATTENZIONE!: La libreria di Android a partire da API 29 non è più supportata e quindi è necessario utilizzare la libreria AndroidX considerare di convertire i vecchi progetti ad AndroidX dopo aver letto questa guida (in Inglese)
Questo articolo è disponibile anche con l'utilizzo delle librerie AndroidX
Torna all'inizio
FILE menu_drawer.xml
Questo file contiene le voci di menù del Drawer Layout
Questo file deve essere creato all'interno della cartella menu, vedere questo articolo su come creare questa cartella e i file al suo interno.
Una volta aperto il file aggiungere queste righe di codice:
Torna all'inizio
LAYOUT
All'interno della cartella layout bisogna creare tre file per il Drawer Layout:
nav_header_main.xml
Questo file contiene il layout dell’intestazione del menù laterale: solitamente contiene uno sfondo, un logo, ed alcune scritte.
Per creare questo file seguire questi passaggi:
- Selezionare la cartella layout
- Cliccare con il tasto destro sulla cartella layout
- Selezionare New
- Selezionare Layout resource file
inserire nel campo Root element: il nome della View principale: LinearLayout
Premere il pulsante OK per confermare, verrà creato un file dove al suo interno occorre creare il layout dell'intestazione del Drawer Layout, occorre modificare la View LinearLayout sostituendo l'attributo
app_bar_main.xml
Questo file raggruppa la toolbar con il contenuto principale dell’app che sarà all'interno del file content_main.xml che vedremo successivamente.
Per creare questo file seguire questi passaggi:
- Selezionare la cartella layout
- Cliccare con il tasto destro sulla cartella layout
- Selezionare New
- Selezionare Layout resource file
inserire nel campo Root element: il nome della View principale: CoordinatorLayout
Premere il pulsante OK per confermare, verrà creato un file dove all'interno del tag CoordinatorLayout vanno aggiunti questi attributi
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
xmlns:app="http://schemas.android.com/apk/res-auto" | |
xmlns:tools="http://schemas.android.com/tools" | |
tools:context=".MainActivity" |
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
<android.support.design.widget.AppBarLayout | |
android:layout_height="wrap_content" | |
android:layout_width="match_parent" | |
android:theme="@style/AppTheme.AppBarOverlay"> | |
<android.support.v7.widget.Toolbar | |
android:id="@+id/toolbar" | |
android:layout_width="match_parent" | |
android:layout_height="?attr/actionBarSize" | |
android:background="?attr/colorPrimary" | |
app:popupTheme="@style/AppTheme.PopupOverlay"/> | |
</android.support.design.widget.AppBarLayout> | |
<include layout="@layout/content_main"/> |
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
<?xml version="1.0" encoding="utf-8"?> | |
<android.support.design.widget.CoordinatorLayout | |
xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:app="http://schemas.android.com/apk/res-auto" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
tools:context=".MainActivity"> | |
<android.support.design.widget.AppBarLayout | |
android:layout_height="wrap_content" | |
android:layout_width="match_parent" | |
android:theme="@style/AppTheme.AppBarOverlay"> | |
<android.support.v7.widget.Toolbar | |
android:id="@+id/toolbar" | |
android:layout_width="match_parent" | |
android:layout_height="?attr/actionBarSize" | |
android:background="?attr/colorPrimary" | |
app:popupTheme="@style/AppTheme.PopupOverlay"/> | |
</android.support.design.widget.AppBarLayout> | |
<include layout="@layout/content_main"/> | |
</android.support.design.widget.CoordinatorLayout> |
content_main.xml
Questo file è l'ultimo da creare in quanto conterrà il layout principale della nostra app; quindi sarà necessario spostare tutto il contenuto del file activity_main.xml all'interno di questo.
Per creare questo file seguire questi passaggi:
- Selezionare la cartella layout
- Cliccare con il tasto destro sulla cartella layout
- Selezionare New
- Selezionare Layout resource file
inserire nel campo Root element: il nome della View principale: qualsiasi cosa va bene in quanto poi verrà sostituito dal contenuto di activity_main.xml
Premere il pulsante OK per confermare quindi
- aprire il file activity_main.xml in visualizzazione codice
- Selezionare tutto il contenuto del file
- Copiarlo
- Aprire nuovamente il file content_main.xml in visualizzazione codice
- Cancellare il contenuto
- Incollare il codice copiato dal file activity_main.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
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" | |
tools:showIn="@layout/app_bar_main" |
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
<?xml version="1.0" encoding="utf-8"?> | |
<android.support.constraint.ConstraintLayout | |
xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:app="http://schemas.android.com/apk/res-auto" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
app:layout_behavior="@string/appbar_scrolling_view_behavior" | |
tools:context=".MainActivity" | |
tools:showIn="@layout/app_bar_main"> | |
<TextView | |
android:id="@+id/textView3" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:text="Hello World!" | |
app:layout_constraintBottom_toBottomOf="parent" | |
app:layout_constraintLeft_toLeftOf="parent" | |
app:layout_constraintRight_toRightOf="parent" | |
app:layout_constraintTop_toTopOf="parent" /> | |
<TextView | |
android:id="@+id/textView2" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:layout_marginStart="173dp" | |
android:layout_marginLeft="173dp" | |
android:layout_marginTop="122dp" | |
android:layout_marginEnd="179dp" | |
android:layout_marginRight="179dp" | |
android:layout_marginBottom="215dp" | |
android:text="TextView" | |
app:layout_constraintBottom_toBottomOf="parent" | |
app:layout_constraintEnd_toEndOf="parent" | |
app:layout_constraintStart_toStartOf="parent" | |
app:layout_constraintTop_toBottomOf="@+id/textView3" /> | |
<TextView | |
android:id="@+id/textView4" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:layout_marginStart="178dp" | |
android:layout_marginLeft="178dp" | |
android:layout_marginTop="244dp" | |
android:layout_marginEnd="174dp" | |
android:layout_marginRight="174dp" | |
android:layout_marginBottom="93dp" | |
android:text="TextView" | |
app:layout_constraintBottom_toTopOf="@+id/textView3" | |
app:layout_constraintEnd_toEndOf="parent" | |
app:layout_constraintStart_toStartOf="parent" | |
app:layout_constraintTop_toTopOf="parent" /> | |
</android.support.constraint.ConstraintLayout> |
Torna all'inizio del paragrafo
Torna all'inizio
activity_main.xml
Il file activity_main.xml è quello che viene caricato quando si apre l'app ed è importante che contenga queste righe di codice:
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
<?xml version="1.0" encoding="utf-8"?> | |
<android.support.v4.widget.DrawerLayout | |
xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:app="http://schemas.android.com/apk/res-auto" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:id="@+id/drawer_layout" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:fitsSystemWindows="true" | |
tools:openDrawer="start"> | |
<include | |
layout="@layout/app_bar_main" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent"/> | |
<android.support.design.widget.NavigationView | |
android:id="@+id/nav_view" | |
android:layout_width="wrap_content" | |
android:layout_height="match_parent" | |
android:layout_gravity="start" | |
android:fitsSystemWindows="true" | |
app:headerLayout="@layout/nav_header_main" | |
app:menu="@menu/menu_drawer"/> | |
</android.support.v4.widget.DrawerLayout> |
Come si può vedere l'app viene eseguita correttamente ma non è presente il titolo nell'ActionBar e nemmeno il classico tasto con 3 linee orizzontali per aprire il menù laterale, ma trascinando con il dito dal lato sinistro dello schermo verso destra vediamo comparire il menù laterale. Quindi a questo punto è necessario passare alla scrittura del codice all'interno del file MainActivity.kt
Torna all'inizio del paragrafo
Torna all'inizio
MainActivity.kt
All'interno del file MainActivity.kt è necessario modificare la classe MainActivity e aggiungere alcune righe di codice all'interno della funzione onCreate per inizializzare l'ActionBar e il Drawer Layout, dopo bisogna aggiungere alcune funzioni che permettono di aprire e chiudere il menù laterale e gestire il click sui vari elementi che compongono il menù laterale.
La classe MainActivity che si ha in un progetto che non è provvisto del menù laterale ha la seguente sintassi:
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
class MainActivity : AppCompatActivity() { | |
//... | |
//... | |
} |
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
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { | |
//... | |
//... | |
} |
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
import android.support.design.widget.NavigationView //Importazione della Classe: NavigationView |
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
override fun onNavigationItemSelected(item: MenuItem): Boolean { | |
//inserire qui il codice da eseguire quando si clicca su un elemento del menu laterale | |
} |
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
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() | |
} | |
} | |
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) | |
drawerLayout.closeDrawer(GravityCompat.START) | |
return true |
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
import android.support.v4.view.GravityCompat //Importazione della Classe: GravityCompat | |
import android.support.v4.widget.DrawerLayout //Importazione della Classe: DrawerLayout |
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
val toolbar: Toolbar = findViewById(R.id.toolbar) | |
setSupportActionBar(toolbar) |
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
import android.support.v7.widget.Toolbar //Importazione della Classe: Toolbar |
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
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) |
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
import android.support.v7.app.ActionBarDrawerToggle //Importazione della Classe: ActionBarDrawerToggle |
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
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() | |
} | |
} |
Ecco come si presenta il file MainActivity.kt
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.tutorialadddrawer | |
import android.support.v7.app.AppCompatActivity | |
import android.os.Bundle | |
import android.support.design.widget.NavigationView //Importazione della Classe: NavigationView | |
import android.support.v4.view.GravityCompat //Importazione della Classe: GravityCompat | |
import android.support.v4.widget.DrawerLayout //Importazione della Classe: DrawerLayout | |
import android.support.v7.app.ActionBarDrawerToggle //Importazione della Classe: ActionBarDrawerToggle | |
import android.support.v7.widget.Toolbar //Importazione della Classe: Toolbar | |
import android.view.MenuItem //Importazione della Classe: MenuItem | |
import android.widget.Toast | |
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) | |
} | |
//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 2", 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