2015-10-14 29 views
6

Ciao Ho provato a sovrascrivere il tema per dialogFragment per fullscreen ma lo schermo intero che volevo era una sovrapposizione in cima all'attività precedente così quando viene aperto dialogFragment, possiamo ancora vedere indietro l'attività dal padding tra lo schermo e il dialogFragment.Android: Come avere dialogFragment a schermo intero

Questo è lo stile che ho usato per schermo intero

<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

Eventuali duplicati di [DialogFragment Full Screen in Android] (http://stackoverflow.com/questions/7189948/full-screen-dialogfragment-in-android) – Distwo

risposta

0

Si può solo impostare manualmente i params di layout nel codice in questo modo. Spero che sia d'aiuto ! :). Verificate anche in questo SO Adjusting size of custom dialog box in android

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

Questa è la soluzione che ho capito per gestire il problema:

@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

L'aggiunta della logica in onStart() ha funzionato. Grazie! –

+1

Grazie, funziona! – Herman

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

C'è un metodo per modificare lo stile e il tema.

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

L'ho testato per ottenere a schermo intero e funziona perfettamente con un layout semplice.

6

Si può anche fare qualcosa piacerti-

@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

Grazie, questa sembrava essere l'unica cosa che ha funzionato per me, in concomitanza con MATCH_PARENT in onStart che altri hanno menzionato. – Aranda

0

FWIW, ho dovuto impostare uno stile particolare che una sottoclasse off @ stile/Base.Theme.AppCompat.Light. Altrimenti, nessuno dei campi della libreria di supporto sembrava corretto. Se usi @ style/Base.Theme.AppCompat.Light.Dialog, crea quell'espressione fluttuante che non volevo.

7

Sotto soluzione ha funzionato perfettamente per me.

Creare stile per Frammento di dialogo come di seguito:

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

Creare la classe Java come di seguito:

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

Felice di codifica !!!

+0

Lavoro perfetto. Bel lavoro – KingWu