В Android docs on AlertDialog, он дает следующую инструкцию и пример для настройки пользовательского представления в AlertDialog:Как реализовать пользовательский AlertDialog View
If you want to display a more complex view, look up the FrameLayout called "body" and add your view to it:
FrameLayout fl = (FrameLayout) findViewById(R.id.body);
fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT));
Во-первых, это довольно очевидно, что add()
является опечаткой и должна быть addView()
.
Я смущен первой строкой, используя R.id.body. Кажется, что это элемент body из AlertDialog ... но я не могу просто ввести это в свой код b/c, он дает ошибку компиляции. Где определяется или назначается R.id.body или что-то еще?
Вот мой код. Я попытался использовать setView(findViewById(R.layout.whatever)
на конструкторе, но это не сработало. Я предполагаю, потому что я его не раздувал вручную?
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();
Чтобы найти и использовать свои объекты на диалоге, выполните следующие четыре шага: http://stackoverflow.com/a/18773261/1699586 – Sara
Однострочный ответ: добавьте '.setView (getLayoutInflater(). Inflate (R.layout.dialog_view, null))' к строителю. Подчеркните Серхио Виудесу, ниже. –