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:

Inserisci Descrizione dell'immagine qui

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

È stato utile?

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 ereditarire Dialog anziché AlertDialog.

ANCHE FARE QUELLO, non è necessario passare il android.R.style.Theme_Dialog nel costruttore (la sottoclassamento in APAREMENT AlertDialog viene fornito senza tema).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top