ในเอกสาร Android บน AlertDialogจะให้คำแนะนำและตัวอย่างต่อไปนี้สำหรับการตั้งค่ามุมมองแบบกำหนดเองใน AlertDialog:
หากคุณต้องการแสดงมุมมองที่ซับซ้อนขึ้นให้ค้นหา FrameLayout ที่เรียกว่า "body" และเพิ่มมุมมองของคุณเข้าไป:
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 ด้านล่าง