2015-10-14 41 views
6

Witaj Próbowałem przesłonić motyw do okna dialogowegoFragment dla trybu pełnoekranowego, ale na pełnym ekranie chciałem, aby był nakładką na poprzednią aktywność, więc gdy okno dialogowe jest otwarte, nadal widzimy cofnij aktywność z dopełnienia między ekranem a oknem dialogowym.Android: Jak ustawić dialogFragment na pełny ekran

Jest to styl Użyłem do pełnego ekranu

<style name="fullscreen_dialog" parent="android:Theme" > 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFullscreen">true</item> 
    <item name="android:windowIsFloating">false</item> 
</style> 
+0

Możliwy duplikat [pełny DialogFragment ekranu w Android] (http://stackoverflow.com/questions/7189948/full-screen-dialogfragment-in-android) – Distwo

Odpowiedz

0

może po prostu ręcznie ustawić params układu tak jak w kodzie. Mam nadzieję, że to pomoże ! :). Również sprawdzić to to tak Adjusting size of custom dialog box in android

Window window = myDialog.getWindow(); 
window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
31

To rozwiązanie zorientowali się obsługiwać swój problem:

@Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     Dialog dialog = super.onCreateDialog(savedInstanceState);  
     dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
     return dialog; 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     Dialog dialog = getDialog(); 
     if (dialog != null) { 
      dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
      dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
     } 
    } 
+2

Dodanie logiki w onStart() zdziałało. Dzięki! –

+1

Dzięki, działa! – Herman

1
getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
    getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
1

Istnieje metoda na zmianę stylu i tematu.

/* theme is optional, I am using leanback... */ 
setStyle(STYLE_NORMAL, R.style.AppTheme_Leanback); 

Przetestowałem to, aby uzyskać pełnoekranowy i działa dobrze z prostym układem.

6

Można również zrobić coś jak-

@Override 
    public void onCreate(@Nullable final Bundle savedInstanceState) { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     setStyle(STYLE_NO_TITLE, android.R.style.Theme_Material_Light_NoActionBar_Fullscreen); 
    } else { 
     setStyle(STYLE_NO_TITLE, android.R.style.Theme_DeviceDefault_Light_NoActionBar); 
    } 
    super.onCreate(savedInstanceState); 

    } 
+0

Dzięki, to wydawało się być jedyną rzeczą, która zadziałała dla mnie, w połączeniu z MATCH_PARENT w onStart, o którym wspominali inni. – Aranda

0

FWIW, musiałem założyć specjalny styl podklasy off @ Styl/Base.Theme.AppCompat.Light. W przeciwnym razie żadne z pól biblioteki pomocy nie wyglądało prawidłowo. Jeśli użyjesz @ style/Base.Theme.AppCompat.Light.Dialog, stworzy to pływający wygląd, którego nie chcę.

7

Poniższe rozwiązanie działało idealnie dla mnie.

Tworzenie styl Fragment Dialog jak poniżej:

<style name="dialog_theme" parent="android:Theme" > 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowIsFloating">false</item> 
</style> 

Tworzenie klasy java, jak poniżej:

public class FiltersDialogFragment extends android.support.v4.app.DialogFragment { 

    static FiltersDialogFragment newInstance() { 
     FiltersDialogFragment fragment = new FiltersDialogFragment(); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setStyle(DialogFragment.STYLE_NORMAL, R.style.dialog_theme); 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     Dialog d = getDialog(); 
     if (d!=null){ 
      int width = ViewGroup.LayoutParams.MATCH_PARENT; 
      int height = ViewGroup.LayoutParams.MATCH_PARENT; 
      d.getWindow().setLayout(width, height); 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.dialog_filters, container, false); 
     return view; 
    } 
} 

Szczęśliwy kodowania !!!

+0

Działa idealnie. Dobra robota – KingWu