Full Screen DialogFragment in Android
Try switching to a LinearLayout
instead of RelativeLayout
. I was targeting the 3.0 Honeycomb api when testing.
public class FragmentDialog extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.show);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
showDialog();
}
});
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
void showDialog() {
FragmentTransaction ft = getFragmentManager().beginTransaction();
DialogFragment newFragment = MyDialogFragment.newInstance();
newFragment.show(ft, "dialog");
}
public static class MyDialogFragment extends DialogFragment {
static MyDialogFragment newInstance() {
MyDialogFragment f = new MyDialogFragment();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_dialog, container, false);
return v;
}
}
}
and the layouts:
fragment_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:minWidth="1000dp"
android:minHeight="1000dp">
</LinearLayout>
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff">
<Button android:id="@+id/show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:text="show">
</Button>
</LinearLayout>
How to display Dialog Fragment on FullScreen?
If you are sure that your XML's root is match_parent to match_parent, this should solve your problem, replace your onCreateDialog with below
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
final Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
return dialog;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.defeat_alert, container, false);
binding = DefeatAlertBinding.bind(view);
binding.startAgain.setOnClickListener((v -> {
mListener.onDialogPositiveClick(DefeatDialog.this);
}));
return v;
}
@Override
public void onStart() {
super.onStart();
Dialog dialog = getDialog();
if (dialog != null) {
int width = ViewGroup.LayoutParams.MATCH_PARENT;
int height = ViewGroup.LayoutParams.MATCH_PARENT;
dialog.getWindow().setLayout(width, height);
}
}
How to set Full screen dialog with dialog fragment
Create a theme
in your style.xml
which extends from Theme.AppCompat.Light.DarkActionBar
, something like below:
<style name="DialogFragmentTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:paddingRight">0dp</item>
<item name="android:paddingLeft">0dp</item>
<item name="android:layout_width">match_parent</item>
<item name="android:windowNoTitle">true</item>
</style>
and set the style
you created while opening the dialog
, something like below:
CustomDialogFragment mDialog = new CustomDialogFragment();
...
mDialog.setStyle(DialogFragment.STYLE_NORMAL, R.style.DialogFragmentTheme);
mDialog.show(getSupportFragmentManager(), "DialogFragment");
Android: How to have dialogFragment to fullscreen
You could just manually set the layout params in code like so. Hope it helps ! :). Also check it this SO Adjusting size of custom dialog box in android
Window window = myDialog.getWindow();
window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
Fullscreen DialogFragment overlaps with StatusBar
The problem is in the transaction.add(containerId, fragment) part.
You have it set to:
transaction.add(android.R.id.content, fragment)
, and it is the setting of it to android.R.id.content that is causing the overlap.
Instead, set it to the id of the parent's content frame in the calling activity.
For example, in my code the main activity parent layout was a DrawerLayout, with id of drawer_layout, so my fix was
MyDialogFragment fragment = new MyDialogFragment ();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
transaction.add(R.id.drawer_layout, frag)
.addToBackStack(null).commit();
Video fullscreen mode in dialogFragment
In onStart
of your DialogFragment
, you can set the height and width to MATCH_PARENT
like below:
@Override
public void onStart()
{
super.onStart();
Dialog dialog = getDialog();
if (dialog != null)
{
int width = ViewGroup.LayoutParams.MATCH_PARENT;
int height = ViewGroup.LayoutParams.MATCH_PARENT;
dialog.getWindow().setLayout(width, height);
//You need to add below lines in order to show FullScreen VideoView without the status bar
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
Related Topics
Add "View More" at the End of Textview After 3 Lines
Gradle's Dependency Cache May Be Corrupt (This Sometimes Occurs After a Network Connection Timeout.)
Import .CSV File to SQLite in Android
Need an Example About Recyclerview.Adapter.Notifyitemchanged(Int Position, Object Payload)
Change Background Color of the Action Bar Using Appcompat
Android Http Connection Exception
Android - Setonclicklistener VS Onclicklistener VS View.Onclicklistener
Adt Requires 'Org.Eclipse.Wst.Sse.Core 0.0.0' But It Could Not Be Found
How to Use Onsaveinstancestate() and Onrestoreinstancestate()
Fragmentcontainerview Using Findnavcontroller
Creating a Directory in /Sdcard Fails
How to Check Which Notifications Are Active in Status Bar in Android Dev
Linkedlist Put into Intent Extra Gets Recast to Arraylist When Retrieving in Next Activity
How to Share Same Data Between Multiple Activities