W dokumentacji systemu Android w AlertDialog zawiera następujące instrukcje i przykład ustawiania widoku niestandardowego w AlertDialog:
Jeśli chcesz wyświetlić bardziej złożony widok, wyszukaj FrameLayout o nazwie „body” i dodaj do niego swój widok:
FrameLayout fl = (FrameLayout) findViewById(R.id.body);
fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT));
Po pierwsze, jest całkiem oczywiste, że add()
jest to literówka i tak ma być addView()
.
Jestem zdezorientowany pierwszą linią używającą R.id.body. Wygląda na to, że jest to element treści AlertDialog ... ale nie mogę po prostu wpisać tego w moim kodzie b / c, daje to błąd kompilacji. Gdzie R.id.body jest definiowany lub przypisywany czy cokolwiek?
Oto mój kod. Próbowałem użyć setView(findViewById(R.layout.whatever)
na konstruktorze, ale to nie zadziałało. Zakładam, bo nie nadmuchałem go ręcznie?
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))
do kreatora. Podziękowania dla Sergio Viudesa, poniżej.