Trong tài liệu Android trên AlertDialog , nó cung cấp hướng dẫn và ví dụ sau để đặt chế độ xem tùy chỉnh trong AlertDialog:
Nếu bạn muốn hiển thị một chế độ xem phức tạp hơn, hãy tra cứu FrameLayout được gọi là "body" và thêm chế độ xem của bạn vào đó:
FrameLayout fl = (FrameLayout) findViewById(R.id.body);
fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT));
Trước hết, rõ ràng đó add()
là lỗi đánh máy và có nghĩa là như vậy addView()
.
Tôi bối rối bởi dòng đầu tiên sử dụng R.id.body. Có vẻ như đó là phần tử nội dung của AlertDialog ... nhưng tôi không thể chỉ nhập nó vào mã b / c của mình, nó gây ra lỗi biên dịch. R.id.body được xác định hoặc chỉ định ở đâu hoặc bất cứ điều gì?
Đây là mã của tôi. Tôi đã cố gắng sử dụng setView(findViewById(R.layout.whatever)
trên trình xây dựng nhưng nó không hoạt động. Tôi giả sử vì tôi đã không thổi phồng nó theo cách thủ công?
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))
vào trình tạo. Tín dụng cho Sergio Viudes, bên dưới.