Nei documenti Android su AlertDialog , fornisce le seguenti istruzioni ed esempio per impostare una visualizzazione personalizzata in un AlertDialog:
Se vuoi visualizzare una vista più complessa, cerca il FrameLayout chiamato "body" e aggiungici la tua vista:
FrameLayout fl = (FrameLayout) findViewById(R.id.body);
fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT));
Prima di tutto, è abbastanza ovvio che add()
è un errore di battitura e dovrebbe esserlo addView()
.
Sono confuso dalla prima riga che usa R.id.body. Sembra che sia l'elemento del corpo di AlertDialog ... ma non posso semplicemente inserirlo nel mio codice b / c dà un errore di compilazione. Dove viene definito o assegnato R.id.body o altro?
Ecco il mio codice. Ho provato a usarlo setView(findViewById(R.layout.whatever)
sul builder ma non ha funzionato. Suppongo perché non l'ho gonfiato manualmente?
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title")
.setCancelable(false)
.setPositiveButton("Go", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
EditText textBox = (EditText) findViewById(R.id.textbox);
doStuff();
}
});
FrameLayout f1 = (FrameLayout)findViewById(R.id.body /*CURRENTLY an ERROR*/);
f1.addView(findViewById(R.layout.dialog_view));
AlertDialog alert = builder.create();
alert.show();
.setView(getLayoutInflater().inflate(R.layout.dialog_view, null))
al generatore. Ringraziamo Sergio Viudes, sotto.