In questo articolo a differenza del precedente vedremo come costruire un AlertDialog personalizzato (CustomAlertDialog)
Per prima cosa dobbiamo creare il layout del nostro AlertDialog in questo modo:
Una volta creato il file di layout dell'AlterDialog occorre inserire i vari elementi, ecco un esempio:
mydialog.xml
Come si può vedere la costruzione è praticamente identica ad un qualsiasi layout così come gli elementi che si possono inserire.
Ecco il codice che permette la creazione e visualizzazione dell'AlterDialog personalizzato
Ecco il codice completo all'interno del file MainActivity.kt
Per prima cosa dobbiamo creare il layout del nostro AlertDialog in questo modo:
- Aprire la cartella res
- Cliccare con il tasto destro sulla cartella layout
- Cliccare su New
- Cliccare su Layout resource file
- Inserire il nome del layout nel campo File name:
- Cliccare sul pulsante OK
Una volta creato il file di layout dell'AlterDialog occorre inserire i vari elementi, ecco un esempio:
mydialog.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
<?xml version="1.0" encoding="utf-8"?> | |
<RelativeLayout | |
xmlns:android="http://schemas.android.com/apk/res/android" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content"> | |
<ImageView | |
android:id="@+id/iv_ico" | |
android:layout_width="64dp" | |
android:layout_height="64dp" | |
android:src="@mipmap/ic_launcher" | |
android:layout_centerHorizontal="true" | |
android:layout_marginTop="10dp"/> | |
<TextView | |
android:layout_below="@+id/iv_ico" | |
android:text="Inserire un numero" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:id="@+id/textView2" | |
android:textSize="16sp" | |
android:textColor="#000000" | |
android:layout_marginTop="10dp" | |
android:layout_marginLeft="10dp"/> | |
<EditText | |
android:layout_below="@+id/textView2" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:inputType="number" | |
android:id="@+id/et_number" | |
android:layout_marginTop="10dp" | |
android:layout_marginLeft="10dp" | |
android:layout_marginRight="10dp"/> | |
</RelativeLayout> |
Ecco il codice che permette la creazione e visualizzazione dell'AlterDialog personalizzato
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
//dichiarazione della variabile builder per costruire l' AlertDialog | |
val dialog = AlertDialog.Builder(this) | |
//associazione del layout "mydialog.xml" ad AlertDialog | |
val dialogView = layoutInflater.inflate(R.layout.mydialog, null) | |
//dichiarazione variabile associata alla EditText contenuta nell' AlertDialog | |
val number = dialogView.findViewById<EditText>(R.id.et_number) | |
//impostazione del layout "mydialog.xml" all'interno dell' AlertDialog | |
dialog.setView(dialogView) | |
//con questa riga di codice si impedisce di annullare l'AlertDialog con il tasto back del dispositivo | |
dialog.setCancelable(false) | |
//impostazione del pulsante di conferma positiva | |
dialog.setPositiveButton("OK") { dialogInterface: DialogInterface, i: Int -> } | |
//dichiarazione dell' Alert Dialog personalizzato (CustomAlertDialog) | |
val customDialog = dialog.create() | |
//visualizzazione del CustomAlertDialog | |
customDialog.show() | |
//queste righe di codice permettono di eseguire una determinata funzione quando si | |
//clicca sul pulsante di conferma positiva in questo caso "OK" | |
customDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { | |
//controllo di quello che è stato scritto nella EditText della Dialog | |
if(number.text.toString() == "") | |
{ | |
Toast.makeText(this, "Inserire almeno un numero", LENGTH_SHORT).show() | |
} | |
else { | |
textInDialog!!.text = number.text.toString() | |
//chiude CustomAlertDialog | |
customDialog.dismiss() | |
} | |
} |
Ecco il codice completo all'interno del 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.tutorialalertdialog2 | |
import android.app.AlertDialog //importazione della Classe: AlertDialog | |
import android.content.DialogInterface //importazione della Classe: DialogInterface | |
import android.support.v7.app.AppCompatActivity | |
import android.os.Bundle | |
import android.widget.Button | |
import android.widget.EditText | |
import android.widget.TextView | |
import android.widget.Toast | |
import android.widget.Toast.* | |
class MainActivity : AppCompatActivity() { | |
var adButton1: Button? = null | |
var textInDialog: TextView? = null | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
setContentView(R.layout.activity_main) | |
adButton1 = findViewById(R.id.button1) | |
textInDialog = findViewById(R.id.textView) | |
adButton1!!.setOnClickListener { | |
//dichiarazione della variabile builder per costruire l' AlertDialog | |
val dialog = AlertDialog.Builder(this) | |
//associazione del layout "mydialog.xml" ad AlertDialog | |
val dialogView = layoutInflater.inflate(R.layout.mydialog, null) | |
//dichiarazione variabile associata alla EditText contenuta nell' AlertDialog | |
val number = dialogView.findViewById<EditText>(R.id.et_number) | |
//impostazione del layout "mydialog.xml" all'interno dell' AlertDialog | |
dialog.setView(dialogView) | |
//con questa riga di codice si impedisce di annullare l'AlertDialog con il tasto back del dispositivo | |
dialog.setCancelable(false) | |
//impostazione del pulsante di conferma positiva | |
dialog.setPositiveButton("OK") { dialogInterface: DialogInterface, i: Int -> } | |
//dichiarazione dell' Alert Dialog personalizzato (CustomAlertDialog) | |
val customDialog = dialog.create() | |
//visualizzazione del CustomAlertDialog | |
customDialog.show() | |
//queste righe di codice permettono di eseguire una determinata funzione quando si | |
//clicca sul pulsante di conferma positiva in questo caso "OK" | |
customDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { | |
//controllo di quello che è stato scritto nella EditText della Dialog | |
if(number.text.toString() == "") | |
{ | |
Toast.makeText(this, "Inserire almeno un numero", LENGTH_SHORT).show() | |
} | |
else { | |
textInDialog!!.text = number.text.toString() | |
//chiude CustomAlertDialog | |
customDialog.dismiss() | |
} | |
} | |
} | |
} | |
} |
Download Project | ![]() |
Download file APK | ![]() |
Commenti
Posta un commento