โดยปกติแล้ว การใช้ Dialog ที่มีให้ใช้ใน Android มันก็สะดวกอยู่หรอก เพราะสามารถเรียกใช้ได้ง่าย แต่เจ้าของบล็อกเชื่อว่าหลายๆคนต้องการให้ Dialog มีลูกเล่นบ้าง เพราะ Dialog แบบปกติก็มีข้อจำกัดในการตกแต่ง และใส่ลูกเล่น ดังนั้นส่วนใหญ่จึงใช้วิธีการสร้าง Dialog ขึ้นมาเอง โดยเจ้าของบล็อกชอบเรียกว่า Custom Dialog
ซึ่งการสร้างเจ้า Custom Dialog เนี่ย มีการสร้างที่แตกต่างกันออกไปในแต่ละคนทำ ซึ่งเจ้าของบล็อกก็ใช้วิธีที่สั้น เน้นเข้าใจง่าย เวลาจะหยิบมาใช้ก็เอามาใช้ได้เลย ไม่ต้องยุ่งยาก (เน้นแค่ว่าเจ้าของบล็อกเข้าใจได้ง่ายสุด) สำหรับการสร้าง Custom Dialog จะว่าง่ายๆเลยก็คือ สร้าง Layout ขึ้นมาสำหรับทำ Custom Dialog เมื่อแสดง Dialog ก็ให้แสดง Layout ที่สร้างไว้ ตัวอย่างนี้เจ้าของจะสร้าง Button ขึ้นมาอันนึง เมื่อกดปุ่มก็จะแสดง Dialog จาก layout ที่ชื่อ customdialog.xml มาแสดง โดยโค๊ดทั้งหมดก็จะมีด้วยกันดังนี้
package app.akexorcist.customdialog; android.os.Bundle; android.view.View; android.view.View.OnClickListener; android.view.Window; android.widget.Button; android.widget.TextView; android.widget.Toast; android.app.Activity; android.app.Dialog; public class Main Activity { public void onCreate(Bundle savedInstanceState) { .onCreate(savedInstanceState); setContentView(R.layout.); Button btnDialog = (Button)findViewById(R.id.); btnDialog.setOnClickListener(OnClickListener() {public void onClick (View v) { Dialog dialog =new Dialog(Main.this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE ); dialog.setContentView(R.layout.customdialog); dialog.setCancelable(); Button button1 = (Button)dialog.findViewById(R.id.); button1.setOnClickListener(OnClickListener() {public void onClick(View v) { Toast.makeText(getApplicationContext() ,"Close dialog" , Toast.LENGTH_SHORT ); dialog.cancel(); } }); TextView textView1 = (TextView)dialog.findViewById(R.id.); textView1.setText("Custom Dialog" ); TextView textView2 = (TextView)dialog.findViewById(R.id.); textView2.setText("Try it yourself"); dialog.show(); } }); } }
สำหรับปุ่มก็เหมือนกับการสร้างปุ่มทั่วๆไปน่ะแหละ ที่สร้าง Event Listener ขึ้นมา เป็น onClickListener จากนั้นทำการสร้าง Object ที่ชื่อ dialog ขึ้นมา โดยกำหนดไม่ต้องแสดง Title Bar ด้วยคำสั่ง
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
อยากจะปิดหรือเปิด Title Bar ก็แล้วแต่ผู้หลงเข้ามาอ่านเลย ถ้าอยากเปิด Title Bar ด้วยก็เอาคำสั่งนี้ออก แล้วกำหนดให้ใช้ Layout จาก customdialog.xml ด้วยคำสั่ง
dialog.setContentView(R.layout.customdialog);
สามารถยกเลิกหน้าต่าง dialog ได้ หรือก็คือสามารถกดปุ่ม Back บนแอนดรอยด์เพื่อปิด dialog ได้
ทีนี้ก็สร้าง Widget ต่างๆบน customdialog.xml ได้เลย แต่เวลาสร้างจะต้องระบุชื่อ dialog ใน findViewById ด้วย
Button button1 = (Button) dialog.findViewById(R.id.button1);
ซึ่ง dialog ก็ขึ้นอยู่กับชื่อ Object ของ Dialog ที่สร้างขึ้นมานั่นแหละ ที่เหลือก็กำหนดได้ตามปกติเหมือน Layout ทั่วๆไปเลย จะไปเอา List View หรือ Spinner หรืออะไรมาลงในนี้ก็ตามใจชอบเลย