2015-10-14 9 views
6

Hallo Ich habe versucht, das Thema auf die DialogFragment für Vollbild überschreiben, aber die Vollbild wollte ich war ein Overlay über die vorherige Aktivität, so dass das DialogfeldFragment geöffnet ist, können wir immer noch sehen Zurück Aktivität von der Auffüllung zwischen dem Bildschirm und dem Dialogfragment.Android: Wie dialogFragment zu Vollbild

Dies ist der Stil, den ich für das Vollbild verwendet habe

<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

Mögliche Duplikat [Full Screen DialogFragment in Android] beantwortet haben (http://stackoverflow.com/questions/7189948/Vollbild-Dialogfragment-in-Android) – Distwo

Antwort

0

Sie könnten nur manuell den Layout-params in Code wie so festgelegt. Ich hoffe es hilft ! :). Überprüfen Sie es auch dieses SO Adjusting size of custom dialog box in android

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

Dies ist die Lösung herausgefunden ich Ihr Problem zu behandeln:

@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

Hinzufügen der Logik in OnStart() hat den Trick gemacht. Vielen Dank! –

+1

Danke, es funktioniert! – Herman

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

ein Verfahren zum Ändern der Stil und Thema ist.

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

Ich habe es getestet, um Vollbild zu bekommen und es funktioniert gut mit einfachen Layout.

6

Sie können auch etwas tun, wie-

@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

Danke, das schien das einzige zu sein, was für mich in Verbindung mit dem MATCH_PARENT in onStart funktioniert hat, das andere erwähnt haben. – Aranda

0

FWIW, ich hatte einen besonderen Stil einrichten, die @ style subclassed off/Base.Theme.AppCompat.Light. Ansonsten sah keines der Support-Bibliothek-Felder richtig aus. Wenn Sie @ style/Base.Theme.AppCompat.Light.Dialog verwenden, erstellt es das Floating-Look, das ich nicht wollte.

7

Unten Lösung funktionierte perfekt für mich.

für Fragment-Dialog-Stil wie unten:

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

Ihre Java-Klasse erstellen, wie unten:

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

Glücklich Codierung !!!

+0

Arbeiten perfekt. Gut gemacht – KingWu

Verwandte Themen