2015-08-14 11 views
6

Próbowałem wielu wariantów, aby utworzyć okno dialogowe na pełnym ekranie, ale nie mogłem. Potrzebuję czegoś takiego, jak to, z dwoma przyciskami: http://i.stack.imgur.com/dLSx8.pngJak wykonać pełny ekran projektowania materiałów?

+1

wystarczy użyć innego rodzaju działalności i otwórz go z 'startActivityForResult'? – tachyonflux

+0

Imho, które nie jest dialogiem, ale aktywnością z niestandardowym paskiem narzędzi. – FWeigl

+0

Wypróbuj [this] (https://github.com/nikialeksey/FullScreenDialog) –

Odpowiedz

3

Jeśli naprawdę chcesz mieć pełnoekranowe okno dialogowe, po prostu rozszerz klasę Dialog i dodaj kilka poprawek. (Możesz to osiągnąć bez przedłużania czegokolwiek, ale myślałem, że chcesz zachować wszystko w jednym miejscu)

W swoim konstruktorze musisz ustawić styl (dla wyglądu materiału lub może być pustym znacznikiem stylu):

super(context, R.style.DialogStyle); 

trzeba także ustawić widok: (to jest miejsce, gdzie będzie można zdefiniować gdzie/co te dwa przyciski są)

setContentView(R.layout.dialog_view); 

Wreszcie, można również należy zmodyfikować układ okien parametry:

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

Znalazłem na urządzeniach, które testowałem, że ustawienie stylu jest najważniejsze.

* EDIT *

Aby uczynić go trochę bardziej jasne masz dwie opcje:

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 
    } 
} 

Potem, gdy chcesz pokazać go:

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

lub można po prostu wykonaj to:

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

Dziękuję za odpowiedzi. Ale nie rozumiem, gdzie trzeba użyć tego kodu: super (kontekst, R.style.DialogStyle) –

+1

Jeśli nie wiesz, gdzie to pójdzie, musisz zrobić więcej badań na temat rozwoju Androida. Dodałem jednak kilka poprawek, które pomogą ci jeszcze bardziej. –

+0

Oh! Dzięki! Tego potrzebuję. A jeśli ktoś podejmie ten błąd: android.viewWindowManager $ BadTokenException: Nie można dodać window - token null nie jest dla aplikacji, wystarczy użyć YourActivity.this zamiast tego lub getApplicationContext() –

0

Zgadzam się na użycie nowej czynności. Ustaw wskaźnik HomeAsup tak, jak chcesz, a następnie przycisk Zapisz może być pojedynczym elementem menu, który będzie pokazywał, czy chcesz zrobić zdjęcie w trybie przyspieszonym.

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

android: showAsAction = [ "ifRoom" | "nigdy" | "withText" | "zawsze" | „CollapseActionView”]

+0

Gdzie trzeba ustawić HomeAsUpIndicator? Bo jeśli używam getActionBar(). SetHomeAsUpIndicator, biorę błąd. Min API w moim projekcie 15, ale ta metoda wymaga 18. –

+0

Użyj 'getSupportActionBar(). SetHomeAsUpIndicator'. – ieatacid

0

To co mogę używać, aby wyświetlić okno na pełnym ekranie bez paska Działanie:

//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); 
    } 
Powiązane problemy