2012-01-21 37 views
6

tôi đã tạo ra một alertdialog tùy chỉnh bằng đoạn mã sau:Android: Tuỳ chỉnh AlertDialog

AlertDialog.Builder builder; 
AlertDialog alertDialog; 

LayoutInflater inflater = (LayoutInflater)ActivityName.this.getSystemService(LAYOUT_INFLATER_SERVICE); 
View layout = inflater.inflate(R.layout.custom_layout,(ViewGroup)findViewById(R.id.layout_root)); 

       builder = new AlertDialog.Builder(getParent()); 
       builder.setView(layout); 
       alertDialog = builder.create(); 
       alertDialog.show(); 

Vấn đề là bật lên được bao quanh với nền Dialog mặc định có một khoảng trống không gian riêng của tiêu đề (như tiêu đề là không được thiết lập). Làm thế nào để tôi loại bỏ điều này. Tôi đã thử đặt phong cách tùy chỉnh qua ContextThemeWrapper như builder = new AlertDialog.Builder(new ContextThemeWrapper(getParent(), R.style.CustomDialogTheme));

Nhưng nó không hoạt động. Làm thế nào để làm điều đó?!!! Cảm ơn trước. Tuỳ chỉnh kiểu xml được đưa ra dưới đây:

<style name="CustomDialogTheme" parent="android:style/Theme.Dialog.Alert"> 
      <item name="android:windowIsFloating">false</item> 
      <item name="android:windowNoTitle">true</item> 
     </style> 

This is the output on the emulator

+0

Không hiển thị tiêu đề sẽ gây nhầm lẫn cho người dùng, bạn nên hiển thị tiêu đề trên Hộp thoại, vì tiêu chuẩn mong muốn. – JoxTraex

+0

i đính kèm tiêu đề trong bố cục (ví dụ: "Đặt làm ..." như bạn có thể thấy) – IronBlossom

Trả lời

16

sử dụng sau

Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar); 

Bơm bố trí của bạn và thiết lập chế độ xem để nội dung của hộp thoại và

dialog.setContentView(view); 
+1

cảm ơn jitendra !! nó loại bỏ nền mặc định nhưng bây giờ tôi có một vấn đề khác. Điều đó, ứng dụng im làm việc được đặt thành Theme.NoTitleBar.Fullscreen nhưng khi hộp thoại bật lên thanh tiêu đề trên xuống một lần nữa và hộp thoại không ở vị trí trung tâm thay vì ở vị trí trên cùng bên trái (mặc định) của cửa sổ. Bạn có thể giúp tôi về điều này không ??? – IronBlossom

+1

sử dụng hộp thoại Dialog = new Dialog (this, android.R.style.Theme_Translucent_NoTitleBar.Fullscreen); – jeet

+0

và tôi đã khắc phục sự cố định tâm hộp thoại !! thanks – IronBlossom

7
AlertDialog dialog = new AlertDialog.Builder(this) 
.setView(getLayoutInflater().inflate(R.layout.custom_dialog, null)) 
.create(); 

Để nghe các sự kiện giao diện người dùng:

View view = getLayoutInflater().inflate(R.layout.custom_dialog, null); 
Button btn = (Button)view.findViewById(R.id.the_id_of_the_button); 
btn.setOnClickListener(blah blah); 
AlertDialog dialog = new AlertDialog.Builder(this) 
    .setView(view) 
    .create();