Reputation: 881
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>
Upvotes: 47
Views: 93797
Reputation: 41
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)
Upvotes: 0
Reputation: 8745
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 instyles.xml
would be:@android:style/Theme.Translucent.NoTitleBar.Fullscreen
Upvotes: 0
Reputation: 1789
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()
Upvotes: 0
Reputation: 14173
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();
}
}
Upvotes: 1
Reputation: 1869
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.
Upvotes: 3
Reputation: 409
Create your Custom Dialog as
Dialog dialog = new Dialog(context, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
Upvotes: 1
Reputation: 6929
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();
Upvotes: 109
Reputation: 397
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);
}
Upvotes: 1
Reputation: 8886
Try wrapping your dialog_custom_layout.xml
into RelativeLayout
. That worked for me.
Upvotes: 3
Reputation: 466
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.
Upvotes: 3
Reputation: 199
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();
Upvotes: 5
Reputation: 1669
Try this
dialog = new Dialog(context,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
Upvotes: 20
Reputation: 8141
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);
Upvotes: 35
Reputation: 3001
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();
}
Upvotes: 1