it-swarm.com.de

Benutzerdefinierter Dialog im Vollbildmodus?

Gibt es eine Möglichkeit, meine Dialogansicht als Vollbild darzustellen, d. H. Der Dialog den gesamten Bildschirm (wie eine Aktivität) ausfüllt. Ich habe versucht, LayoutParams und Stile wie <item name="Android:windowFullscreen">true</item> zu verwenden, aber es scheint nichts zu funktionieren. 

Ich habe einen Weg gefunden, die Titelleiste loszuwerden, aber ich konnte keinen Weg finden, einen Dialog im Vollbildmodus darzustellen. Kann mir jemand einen Weg vorschlagen, es zu tun.

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="@Android:style/Theme.Dialog">
    <item name="Android:windowFullscreen">true</item>
    <item name="Android:windowFrame">@null</item>
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowIsFloating">true</item>
    <item name="Android:windowContentOverlay">@null</item>
    <item name="Android:windowBackground">@color/dialog_background</item>
</style>
</resources>
39
Bob

Geben Sie seinem Konstruktor ein Nicht-Dialog-Design wie Android.R.style.Theme oder Android.R.style.Theme_Light.

Code von @Bob.

Dialog dialog = new Dialog(context, Android.R.style.Theme_Light); 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.MyCustomDialogLayout); 
dialog.show();
88
Renard

Folgender Code funktioniert in meinem Fall:

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.mydialog2);
dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
31
Nibha Jain

Versuche dies

dialog = new Dialog(context,Android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
16
Lakshmanan

1. anpassen sie ihren dialogstil 

 <style name = "MyDialog" >
        <item name="Android:windowNoTitle">true</item>
        <item name="Android:windowFullscreen">true</item>
        <item name="Android:windowIsTranslucent">true</item>
        <item name = "Android:windowContentOverlay" >@null</item >
        <item name = "Android:colorBackgroundCacheHint" >@null</item >
        <item name = "Android:backgroundDimEnabled">true</item>
        <item name = "Android:windowBackground" >@Android:color/transparent</item >
    </style >

2: Passen Sie Ihren Dialog an

WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
            int width = wm.getDefaultDisplay().getWidth();
            int height = wm.getDefaultDisplay().getHeight();
            final Dialog dialog = new Dialog(this, R.style.MyDialog);
            View view = LayoutInflater.from(this).inflate(R.layout.layout_dialog, null);

            WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
            params.width = WindowManager.LayoutParams.MATCH_PARENT;
            params.height = WindowManager.LayoutParams.WRAP_CONTENT;

            dialog.setContentView(view);
            dialog.getWindow().setGravity(Gravity.BOTTOM);
            dialog.getWindow().setWindowAnimations(R.style.mydialog_Style);
            dialog.show();

2
Allen

Für den Vollbild-Dialog sollten Sie DialogFragment erweitern, es werden Fragment-Lebenszyklusmethoden bereitgestellt. Dies ist die empfohlene Methode in Android-Entwicklerdokumenten. Sie können auch einfache Dialog oder AlertDialog verwenden.

Wenn Sie eine Dialoginstanz erstellen, verwenden Sie einfach Android.R.style.Theme_Black_NoTitleBar_Fullscreen theme mit Kontext wie folgt:

Dialog dialog = new Dialog(getActivity(), Android.R.style.Theme_Black_NoTitleBar_Fullscreen);

oder

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), Android.R.style.Theme_Black_NoTitleBar_Fullscreen);

Dadurch wird der Dialog im Vollbildmodus angezeigt.

1
Biswajit

Versuchen Sie, Ihr dialog_custom_layout.xml in RelativeLayout. Das hat bei mir geklappt.

1
Ayan

Die Antwort funktioniert nicht für mich (SDK 21, Samsung Galaxy S5). Nach dem Suchen und Testen finde ich, dass der Schlüssel zum Einstellen eines Dialogs für den Vollbildmodus der <item name="Android:windowIsFloating">false</item> in Ihrem Dialogstil ist. Die meisten Dialogstile in sdk haben es wahr gemacht! Setzen Sie es in einem Style auf false und verwenden Sie es in

AlertDialog.Builder = new AlertDialog.Builder(getActivity(), R.style.YourStyle);

ihr Stil kann aussehen

<style name="YourStyle">
    <item name="Android:windowIsFloating">false</item>
    ...
</style>

nachdem Sie den Wert auf false gesetzt haben, sollte er Vollbild sein. Und mehr können Sie verwenden

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

um die Höhe auf wrap_content ..__ einzustellen. Hoffe, jemandem zu helfen.

1
AssIstne

Erstellen Sie Ihren benutzerdefinierten Dialog als

Dialog dialog = new Dialog(context, Android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
0
venu46

Ich verwende ein Thema mit Aktivität. In diesem Fall funktionierte der Vollbildmodus folgendermaßen:

int mUIFlag = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().getDecorView().setSystemUiVisibility(mUIFlag);

        getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
        setContentView(R.layout.lockscreen_activity);
}
0
Hamburg is nice

Schritte zum Erstellen eines Vollbilddialogfelds mit benutzerdefiniertem Layout, das den gesamten Bildschirm einnimmt, ohne dass die einzelnen Seiten gefüllt werden müssen.

Schritt 1: Definiere dein benutzerdefiniertes Dialoglayout mit dem Namen layout_fullscreen_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:background="@color/colorPrimary">

    <!-- Your dialog content here -->

</LinearLayout>

Schritt 2: Definiere einen neuen Stil in styles.xml mit dem Namen FullScreenDialog

<style name="FullScreenDialog" parent="Theme.AppCompat.Dialog">
    <item name="Android:windowBackground">@Android:color/transparent</item>
</style>

Schritt 3: Schreibe eine Methode, die einen Dialog erstellt und anzeigt

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        createAndShowDialog(this);
    }

    // This method used to create and show a full screen dialog with custom layout.
    public void createAndShowDialog(Context context) {
        Dialog dialog = new Dialog(context, R.style.FullScreenDialog);
        dialog.setContentView(R.layout.layout_fullscreen_dialog);

        WindowManager.LayoutParams layoutParams = dialog.getWindow().getAttributes();
        dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
        dialog.getWindow().setAttributes(layoutParams);
        dialog.show();
    }
}
0
Tommy

versuchen Sie diesen Code

protected void openDialog() {
        Dialog dialog = new Dialog(this);
        dialog.addContentView(new View(this), (new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)));
        dialog.show();
    }
0
vipin