AlertDialog con la visualizzazione dei contenuti personalizzati non sembra niente come AlertDialog
-
11-12-2019 - |
Domanda
Ho una sottoclasse personalizzata di AlertDialog che dovrebbe visualizzare un elenco di tutte le reti WiFi disponibili nell'intervallo.
Sto visualizzando questa finestra di dialogo creando un'istanza di esso e chiamando Mostra () e non sto usando AlertDialog.Builder (perché voglio usare la mia classe personalizzata).
Ho il mio layout da visualizzare come la vista del contenuto, ma voglio l'aspetto e la sensazione di AlertDialog regolari, con l'intestazione del titolo e il telaio.
Il mio layout personalizzato è piuttosto semplice:
.
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ListView>
E lo sto aggiungendo alla finestra di dialogo su ONCreate ():
.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle(R.string.pick_wifi_network);
setContentView(R.layout.pick_wifi_dialog);
// Rest of implementation
}
Ma il risultato non sembra niente come AlertDialog. Non c'è titolo e il listview prende l'intero schermo:
Quindi cosa sto facendo male e come dovrei farlo bene?
Grazie!
Modifica: Perché non uso AlertDialog.Builder: la mia classe di dialogo personalizzata è responsabile dell'ascolto per Scan_results_avaLable_ation of Wifimanager e aggiornando il listview come i risultati aggiorna. Per questo motivo non riesco a usare AlertDialog.Builder. End Modifica
Soluzione
Penso che il tuo problema sia nel tema del dialogo (che non stai applicando).
Non l'ho provato, ma se lo capisco correttamente, dovrebbe funzionare:
Nel costruttore del tuo dialogo, chiamare il super costruttore che riceve un tema, passando il tema della finestra di dialogo standard.
public CustomDialog(Context context) {
super(context, android.R.style.Theme_Dialog);
}
.
Le finestre di dialogo create in Android hanno questo tema predefinito.
La documentazione per gli stati tema_dialog (V2.2):
.Tema predefinito per finestre di dialogo e attività (sul livello API 10 e inferiore), che viene utilizzato dalla classe di dialogo. Questo cambia la finestra a essere flottante (non riempire l'intero schermo) e mette una cornice attorno al suo Contenuti. Puoi impostare questo tema su un'attività se vuoi Fai un'attività che assomiglia a una finestra di dialogo.
Spero che questo aiuti!
Modifica:
Per risolvere il problema con
setTitle
, il modo più semplice sembra ereditarireDialog
anzichéAlertDialog
.ANCHE FARE QUELLO, non è necessario passare il
android.R.style.Theme_Dialog
nel costruttore (la sottoclassamento in APAREMENTAlertDialog
viene fornito senza tema).