2015-08-14 23 views
6

Tôi đã thử nhiều biến thể để tạo hộp thoại toàn màn hình nhưng tôi không thể. Tôi cần một cái gì đó, như thế này, với hai nút: http://i.stack.imgur.com/dLSx8.pngCách tạo hộp thoại toàn màn hình thiết kế material design?

+1

chỉ cần sử dụng các hoạt động khác và mở nó với 'startActivityForResult'? – tachyonflux

+0

Imho không phải là hộp thoại mà là Hoạt động với thanh công cụ tùy chỉnh. – FWeigl

+0

Hãy thử [this] (https://github.com/nikialeksey/FullScreenDialog) –

Trả lời

3

Nếu bạn thực sự muốn một hộp thoại toàn màn hình chỉ mở rộng lớp Dialog và thêm một vài chỉnh sửa. (Bạn cũng có thể thực hiện điều này mà không mở rộng bất cứ thứ gì, nhưng tôi nghĩ bạn có thể muốn giữ mọi thứ ở một nơi)

Trong hàm tạo của bạn, bạn cần đặt kiểu dáng (cho giao diện tài liệu của bạn).):

super(context, R.style.DialogStyle); 

bạn cũng cần phải thiết lập các quan điểm: (Đây là nơi bạn sẽ xác định nơi/những gì hai nút là)

setContentView(R.layout.dialog_view); 

Cuối cùng, bạn cũng có thể cần phải sửa đổi các cửa sổ bố trí thông số:

getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); 

Tôi đã tìm thấy trên các thiết bị tôi đã thử nghiệm để đặt kiểu là quan trọng nhất.

* EDIT *

Để làm cho nó rõ ràng hơn một chút bạn có hai lựa chọn:

public class MyDialog extends Dialog { 

    public MyDialog(Context context) { 
     super(context, R.style.YourStyle); 
     setContentView(R.layout.dialog_view); 
     getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); //Optional 
     //Any other code you want in your constructor 
    } 
} 

Sau đó, khi bạn muốn hiển thị nó:

//Inside your activity 
MyDialog dialog = new MyDialog(this); //Assuming you are in an activity 'this' is your context 
dialog.show(); 

Hoặc bạn có thể chỉ cần làm điều này:

Dialog normalDialog = new Dialog(this, R.style.YourStyle); 
normalDialog.setContentView(R.layout.dialog_view); 
normalDialog.show(); 
+0

Cảm ơn câu trả lời của bạn. Nhưng tôi không hiểu nơi cần phải sử dụng mã này: siêu (bối cảnh, R.style.DialogStyle) –

+1

Nếu bạn không biết nơi đó sẽ đi, bạn cần phải làm một số nghiên cứu thêm về phát triển Android. Nhưng tôi đã thêm một số chỉnh sửa để giúp bạn nhiều hơn một chút. –

+0

Ồ! Cảm ơn! Đó là những gì tôi cần. Và nếu ai đó nhận lỗi này: android.viewWindowManager $ BadTokenException: Không thể thêm cửa sổ - mã thông báo null không phải cho một ứng dụng, chỉ cần sử dụng YourActivity.this thay vào đó hoặc getApplicationContext() –

0

Tôi đồng ý với việc sử dụng một hoạt động mới. Đặt chỉ báo HomeAsUp thành bất kỳ thứ gì bạn muốn, sau đó nút Lưu có thể là một mục menu được đặt để hiển thị ifRoom.

http://developer.android.com/reference/android/app/ActionBar.html#setHomeAsUpIndicator(int)

android: showAsAction = ["ifRoom" | "không bao giờ" | "withText" | "luôn luôn" | "CollapseActionView"]

+0

Nơi cần đặt HomeAsUpIndicator? Nguyên nhân nếu tôi sử dụng getActionBar(). SetHomeAsUpIndicator, tôi gặp lỗi. API tối thiểu trong dự án của tôi 15, nhưng phương pháp này cần 18. –

+0

Sử dụng 'getSupportActionBar(). SetHomeAsUpIndicator'. – ieatacid

0

Đây là những gì tôi sử dụng để hiển thị một hộp thoại màn hình đầy đủ mà không thanh hành động:

//Display fullscreen without actionbar 
    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { 
     setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Holo_Light_NoActionBar_Fullscreen); 
    } else { 
     setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Material_Light_NoActionBar_Fullscreen); 
    } 
Các vấn đề liên quan