2015-10-30 14 views
6

Ich bin etwas verwirrt.DialogFragment Überlappung durch Statusleiste

Zuerst, wenn ich eine Symbolleiste erstellen und es überlagert von Statusleiste, ich einfach fitSysmtemWindow="true" in übergeordnetes XML hinzufügen und es funktioniert gut.

Aber wenn ich FullScreen DialogFragment erstellen, wird es auch von Statusleiste überlappt. Ich habe versucht, fitSystemWindow="true" hinzuzufügen, und es funktioniert nicht.

Nur auf Android 5.0 und höher. Die Statusleiste wurde nirgendwo durchscheinend dargestellt.

Hier mein DialogFragment Code

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_create_bill_dialog,container, false); 

    return view; 
} 

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

Thanks.Sorry für mein schlechtes Eng.

Antwort

0

Dieses helfen:

View decorView = getWindow().getDecorView(); 

// die Statusleiste ausblenden.

int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN; 

decorView.setSystemUiVisibility(uiOptions); 

// Denken Sie daran, dass Sie nie die Aktionsleiste, wenn die // Statusleiste ausgeblendet ist zeigen sollten, so verstecken, dass auch, wenn nötig.

ActionBar actionBar = getActionBar(); 

actionBar.hide(); 

Die obige Code diables Statusleiste für Geräte 4.1 und höher

+2

danke aber trotzdem, um dieses Problem zu beheben, ohne die Statusleiste auszublenden. –

2

ich hatte das gleiche Problem. Ich habe es gelöst, indem ich 25dp Padding oben in der Wurzelansicht meines Dialog Fragments hinzugefügt habe, um sicherzustellen, dass es sich nicht mit der Statusleiste überlappt.

public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 

    //If showing as a dialog, add some padding at the top to ensure it doesn't overlap status bar 
    if (getDialog() != null) { 
     getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
     view.setPadding(0, (int)PresentationUtils.convertDpToPixel(25f, getContext()), 0, 0); 
     view.requestLayout(); 
    } 
... 
} 

Btw, die util Methode, die ich für die Umwandlung von dp px bin mit finden Sie hier Converting pixels to dp

1

In Ihrem Stile:

<style name="MyDialog" parent="@android:style/Theme.NoTitleBar.Fullscreen"></style> 

In Ihrem Dialog:

new Dialog(builder.context, R.style.MyDialog);