2012-05-02 36 views
14

Cách hiển thị hộp thoại tùy chỉnh làm trung tâm của vùng chứa?Android: Hiển thị hộp thoại tùy chỉnh ở giữa hộp chứa

Dialog customdialog = new Dialog(this,android.R.style.Theme_Translucent_NoTitleBar); 
Window window = customdialog.getWindow(); 
window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
window.setGravity(Gravity.CENTER); 

R.style.Theme_Translucent_NoTitleBar - được sử dụng để xóa đường viền cho cutomdialog. Khi tôi đã sử dụng dòng này, hộp thoại sẽ xuất hiện ở góc phía trước của máy tính bảng?

Có ai có thể giúp tôi giải quyết vấn đề này không?

+0

để xóa đường viền tạo nền tùy chỉnh và thêm đường viền này vào kiểu ​​@ android: color/transparent

Trả lời

37

Thay đổi fill_parent thành wrap_content.I hy vọng đây sẽ là vấn đề mà hộp thoại xuất hiện ở góc của hoạt động. Nó chiếm không gian toàn bộ bố cục. Thay đổi điều này có thể giúp bạn có được những gì bạn thực sự muốn.

Window window = customdialog.getWindow(); 
window.setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
window.setGravity(Gravity.CENTER); 
+1

Cảm ơn. Nó hoạt động tốt. – Kamal

+1

Chấp nhận câu trả lời và upvoting nó sẽ giúp chúng tôi cả hai để cải thiện danh tiếng Vì vậy, hãy làm tương tự với ans này @Kamal Vì vậy, hạnh phúc để giúp bạn ra ngoài. :-) –

+0

điều này làm việc cho tôi ... Cảm ơn rất nhiều cho việc sử dụng này đầy đủ câu trả lời. – Deepak

8

Tôi đã thêm tùy chọn này vào kiểu tùy chỉnh của hộp thoại và nó hoạt động tốt.

<item name="android:layout_gravity">center</item> 

Chiều rộng và chiều cao của hộp thoại được đặt thành wrap_content. Phụ huynh của phong cách là

mẹ = "@ android: phong cách/Theme.Light"

0

Tôi sẽ đi cho đoạn mã này:

 WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
     Window window = dialog.getWindow(); 
     lp.copyFrom(window.getAttributes()); 
     //This makes the dialog take up the full width 
     lp.width = WindowManager.LayoutParams.MATCH_PARENT; 
     lp.height = WindowManager.LayoutParams.MATCH_PARENT; 
     window.setAttributes(lp); 

đâu thoại, là đối tượng hộp thoại sẽ được hiển thị . Bên trong bố trí của hộp thoại, bạn có thể xác định chế độ xem của bố cục như bạn muốn: căn giữa hay không.

Các vấn đề liên quan