match_parent - full screen dialog android studio
Pantalla completa de DialogFragment (10)
En DialogFragment siguientes trabajos. En onCreateView()
agregue lo siguiente
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//…
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
//…
return view;
}
Estoy tratando de crear un DialogFragment con un ancho de MATCH_PARENT para que el diálogo sea casi a pantalla completa (dejando el relleno alrededor de los bordes para el aspecto flotante). He visto esta solución en pantalla completa DialogFragment en Android, pero estoy tratando de evitar el truco de establecer el ancho a 1000dp. Con mi diseño actual, ya sea que use FILL_PARENT o MATCH_PARENT parece que está configurando el ancho y la altura en WRAP_CONTENT.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
He utilizado esta solución para Dialog (no DialogFragment) y funciona como se esperaba:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
En mi código, quería un cuadro de diálogo de pantalla completa, pero aún muestro la barra de notificaciones en la parte superior de la pantalla, así que estoy usando:
setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Black_NoTitleBar);
Esto lo hace en pantalla completa, pero no estoy usando un estilo de pantalla completa, por lo que mantengo la barra de notificaciones.
Espero que ayude a alguien!
Esto es perfecto para mí. cuando se extiende la anulación de onCreateView()
... impulsa toda la lógica
El diálogo lo hace en pantalla completa, solo anula este método.
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
// the content
final RelativeLayout root = new RelativeLayout(getActivity());
root.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
// creating the fullscreen dialog
final Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(root);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.YELLOW));
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
return dialog;
}
He respondido a esta pregunta con una explicación, esta es la forma más rápida y eficiente. Por favor revisa este hilo
Espero que esto ayude :)
La mejor solución que encontré fue establecer el ancho o minWidth en un valor arbitrariamente grande para asegurar que llena la pantalla. No me gusta esta solución, pero no he visto nada mejor.
Para tener un diálogo de pantalla completa, necesitas usar
public class CustomDialogFragment extends DialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout to use as dialog or embedded fragment
return inflater.inflate(R.layout.purchase_items, container, false);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
}
Y para mostrar este diálogo:
CustomDialogFragment newFragment = new CustomDialogFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
// To make it fullscreen, use the ''content'' root view as the container
// for the fragment, which is always the root view for the activity
fragmentManager.beginTransaction().add(android.R.id.content, newFragment).commit();
ATENCIÓN : No puede usar el siguiente código para mostrar el cuadro de diálogo; si no, el cuadro de diálogo se mostrará en el centro de la pantalla, no en pantalla completa.
//don''t show dialog like this
newFragment.show(fragmentManager, "dialog");
También puedes hacer algo como-
@Override
public void onCreate(@Nullable final Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setStyle(STYLE_NO_TITLE, android.R.style.Theme_Material_Light_NoActionBar_Fullscreen);
} else {
setStyle(STYLE_NO_TITLE, android.R.style.Theme_DeviceDefault_Light_NoActionBar);
}
super.onCreate(savedInstanceState);
}
Con esto también podrás ver la barra de estado coloreada para las versiones> = lollipop
esta respuesta me ayuda ¿ Cómo configurar el ancho y la altura de DialogFragment?
int width = activity.getResources().getDisplayMetrics().widthPixels;
int height = activity.getResources().getDisplayMetrics().heightPixels;
content.setLayoutParams(new LinearLayout.LayoutParams(width, height));
intente cambiar a RelativeLayout en lugar de LinearLayout. Funciono en mi caso
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NO_TITLE,android.R.style.Theme_Holo_Light);
}