Dans la documentation Android sur AlertDialog , il donne les instructions et l'exemple suivants pour définir une vue personnalisée dans un AlertDialog:
Si vous souhaitez afficher une vue plus complexe, recherchez le FrameLayout appelé "body" et ajoutez-y votre vue:
FrameLayout fl = (FrameLayout) findViewById(R.id.body);
fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT));
Tout d'abord, il est assez évident que add()
c'est une faute de frappe et qu'elle est censée l'être addView()
.
Je suis confus par la première ligne utilisant R.id.body. Il semble que ce soit l'élément body de AlertDialog ... mais je ne peux pas simplement entrer cela dans mon code car cela donne une erreur de compilation. Où R.id.body est-il défini ou attribué ou autre?
Voici mon code. J'ai essayé d'utiliser setView(findViewById(R.layout.whatever)
sur le constructeur mais cela n'a pas fonctionné. Je suppose que je ne l'ai pas gonflé manuellement?
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))
au constructeur. Crédit à Sergio Viudes, ci-dessous.