在AlertDialog上的Android文档中,它提供了以下说明和示例,用于在AlertDialog中设置自定义视图:
如果要显示更复杂的视图,请查找称为“ body”的FrameLayout并将视图添加到其中:
FrameLayout fl = (FrameLayout) findViewById(R.id.body);
fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT));
首先,很明显这add()
是一个错字,并且本来就是addView()
。
我对使用R.id.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();
.setView(getLayoutInflater().inflate(R.layout.dialog_view, null))
到构建器。感谢下面的Sergio Viudes。