2013-08-29 39 views
12

Tài liệu thiết kế Android ở http://developer.android.com/design/building-blocks/dialogs.html tạo sự khác biệt rõ ràng giữa các hộp thoại, cảnh báo, cửa sổ bật lên và bánh mì nướng. Nó cũng khuyên bạn nên triển khai Hộp thoại bằng phương tiện của lớp DialogFragmentBánh mì nướng bằng phương tiện của lớp Toast. Tuy nhiên, tôi không rõ ràng liệu có phải Cửa sổ bật lên phải được triển khai với PopupWindow hoặc với DialogFragment.Hộp thoại và cửa sổ bật lên trong Android

Tôi biết rằng DialogFragments thường đi kèm với Ok/Hủy bỏ nút và vị trí của PopupWindows có thể được xác định, nhưng:

  • Là những khác biệt nhỏ các đối số chỉ sử dụng một hay khác?
  • DialogFragment người kế thừa của PopupWindow sẽ không được dùng nữa tại một số thời điểm?
  • Theo câu trả lời trong https://stackoverflow.com/a/15165554/2482894, PopupWindow là "Bị giới hạn ở một vài mẫu", nhưng tôi không thể tìm thấy bất kỳ tham chiếu nào với số lượng mẫu giới hạn trong tài liệu lớp học.
  • Vì vậy, cuối cùng, bạn sẽ triển khai Cửa sổ bật lên như thế nào http://developer.android.com/design/media/dialogs_popups_example.png và tại sao?
+0

Ok nay, theo [dialogs.html] (http : //developer.android.com/guide/topics/ui/dialogs.html), họ đang đề xuất sử dụng 'DialogFragment'even cho các cửa sổ như [list_dialog] (http://developer.android.com/images /ui/dialog_list.png) không có nút. Bên cạnh đó, tôi đoán rằng thực tế của việc dựa trên 'Fragments' làm giảm nó thêm vào BackStack, trong khi tôi không rõ ràng làm thế nào tôi sẽ làm điều đó với một' PopupWindow'. Do đó, tôi sẽ tiếp cận phương pháp 'DialogFragment', mặc dù tôi vẫn đánh giá cao một số chi tiết sâu hơn về so sánh cả hai lớp. – leo9r

Trả lời

2

Nếu bạn muốn hộp thoại như trong liên kết, chỉ làm cho họ bằng cách làm cho hộp thoại tùy chỉnh như đề cập dưới đây:

Thực hiện một đối tượng thoại:

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

Set xem tùy chỉnh để hộp thoại này :

show_dialog(){ 
    dialog.setContentView(R.layout.custom_dialog);//your custom dialog layout. 
} 

Bố cục tùy chỉnh của bạn phải như sau:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:id="@+id/custom_dialog_first_rl" 
    android:background="@android:color/black"> 
<!-- write code for rest of your UI here --> 
</RelativeLayout> 

Bây giờ bộ alpha cho bố trí tương đối đầu tiên của bạn trong show_dialog() như thế này:

show_dialog(){ 
    dialog.setContentView(R.layout.custom_dialog);//your custom dialog layout. 
    RelativeLayout custom_dialog_first_rl=(RelativeLayout)dialog.findViewById(R.id.custom_dialog_first_rl); 
     custom_dialog_first_rl.getBackground().setAlpha(170); 
} 

Gọi show_dialog() nơi bạn muốn hiển thị hộp thoại

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