Custom Dialog in full screen?
Asked Answered
P

14

47

Is there any way to make my Dialog view full screen, i.e dialog occupy the entire screen (like an Activity). I tried using the LayoutParams and styles like <item name="android:windowFullscreen">true</item> but nothing seems to be working.

I found a way of getting rid of the Title bar, but couldn't find a way to put a dialog in full screen. So can any one suggest me a way to do it.

<?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>
Pastern answered 16/4, 2012 at 11:51 Comment(3)
Can you post your custom dialog xml file or custom code?Soll
Why dont you just use Activity?Blotchy
Your style worked for meKappel
R
109

Give its constructor a non-dialog theme, such as android.R.style.Theme or android.R.style.Theme_Light.

Code by @Bob.

Dialog dialog = new Dialog(context, android.R.style.Theme_Light); 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.MyCustomDialogLayout); 
dialog.show();
Rye answered 16/4, 2012 at 11:53 Comment(4)
This one works pretty cool. the Dialog is coming in full screen with out any borders. thanks...Pastern
Its great! For NoTitle fullscreen dialog I used "@android:style/Theme.Black.NoTitleBar" as my dialog's theme parent.Particiaparticipant
This works great for that purpose (full screen dialog), however the cancelable property is not working anymore. Any ideas?Avicenna
android.R.style.Theme_DeviceDefault_Dialog_MinWidth use this for minimum width of device.Nonappearance
B
35

Following code works in my case :

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.mydialog2);
dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
Bouldon answered 16/4, 2012 at 12:5 Comment(2)
I tried this one but it is not working in my code, I couldn't find the reason why. But the Renard code is working perfectly.Pastern
dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); worked for meMurray
V
20

Try this

dialog = new Dialog(context,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
Vivle answered 27/4, 2013 at 6:47 Comment(2)
F*cking thanks. Best answer so far. Worked for me (I was doing a custom subclass)Slightly
Dialog dialog = new Dialog(this, LayoutParams.MATCH_PARENT);Lodging
N
5

1.custom your dialog style

 <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 :custom your dialog

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();
Neck answered 29/3, 2016 at 4:10 Comment(1)
This is the best answer so far for me. I tried @Rye answer, that also worked but was making the whole background of the custom dialog black. I used to set the background color to themes, but instead of changing the color according to the themes, it goes completely black.Titfer
N
3

The answer does not work for me(sdk 21, samsung galaxy s5). After searching and testing, I find that the key point for setting a dialog for fullscreen is the <item name="android:windowIsFloating">false</item> in your dialog style. Most styles of Dialog in sdk set it true! Set it false in a style and use it in

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

your style may look like

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

after setting it false, it should be fullscreen. And more, you can use

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

to set it's height to wrap_content. Hope to help someone.

Nephrectomy answered 5/8, 2016 at 2:19 Comment(0)
H
3

Try wrapping your dialog_custom_layout.xml into RelativeLayout . That worked for me.

Hygrometry answered 23/9, 2016 at 7:43 Comment(0)
S
3

For full screen dialog you should extend DialogFragment it will provide Fragment life cycle methods and this is the recommended way in Android developer documents you can use simple Dialog or AlertDialog also.

When you create dialog instance just use android.R.style.Theme_Black_NoTitleBar_Fullscreen theme with context like this :

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

or

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

This will show the dialog in full screen.

Stonehenge answered 26/6, 2017 at 11:12 Comment(0)
P
1

try this code

protected void openDialog() {
        Dialog dialog = new Dialog(this);
        dialog.addContentView(new View(this), (new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)));
        dialog.show();
    }
Playbook answered 16/4, 2012 at 11:58 Comment(2)
create a layout for your dialog and replace "new View(this)" with your layoutPlaybook
call this method from your activity and here "this" is the context its working fine for mePlaybook
D
1

I'm using a Activity with Dialog theme. In this case, fullscreen worked this way:

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);
}
Dedication answered 25/5, 2017 at 15:37 Comment(0)
H
1

Create your Custom Dialog as

Dialog dialog = new Dialog(context, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
Hart answered 23/1, 2018 at 13:5 Comment(0)
S
1

Here are steps how to create a full screen dialog with custom layout which occupies the entire screen without any padding from each site.

Step 1: Define your custom dialog layout named 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>

Step 2: Define a new style in styles.xml named FullScreenDialog

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

Step 3: Write a method which creates and shows a dialog

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();
    }
}
Simian answered 24/2, 2019 at 4:18 Comment(0)
G
0

Full Screen dialog with Databinding

    fun showUserQrCode(
    mContext: Activity,
    showAddMore: Boolean,
    message: String?,
    skipClick: View.OnClickListener?,
    addMoreClick: View.OnClickListener?
) {

    val dialog = Dialog(mContext, android.R.style.Theme_Black_NoTitleBar_Fullscreen)
    val discountBinding: PopupUserQrCodeBinding = DataBindingUtil.inflate(
        LayoutInflater.from(mContext),
        R.layout.popup_user_qr_code,
        null,
        false
    )
    discountBinding.btnSkip.setOnClickListener(skipClick)


    dialog.setContentView(discountBinding.root)
    dialog.show()
}

Without Binding

    val dialog = Dialog(mContext, android.R.style.Theme_Black_NoTitleBar_Fullscreen)
    dialog.setContentView(R.layout.slider_layout)
    dialog.show()
Gangland answered 13/9, 2021 at 13:22 Comment(0)
L
0

Try something like:

Dialog dialog = new Dialog(this, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
dialog.setContentView(R.layout.my_content);
dialog.show();

Basically uses a non-dialog theme for dialog.
Path in styles.xml would be: @android:style/Theme.Translucent.NoTitleBar.Fullscreen

Level answered 31/5, 2022 at 19:49 Comment(0)
N
0

In Kotlin

val dialog = Dialog(this, android.R.style.Theme_Light)
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
        dialog.setContentView(R.layout.level_complete)
        dialog.show()
        dialog.setCancelable(false)
Namhoi answered 29/10, 2022 at 15:8 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.