Cómo hacer el ancho de DialogFragment a Fill_Parent

Hola Estoy trabajando en una aplicación de Android donde estoy utilizando DialogFragment para mostrar el diálogo, pero su ancho es muy pequeño. ¿Cómo puedo hacer este ancho para fill_parent a él?

 public class AddNoteDialogFragment extends DialogFragment { public AddNoteDialogFragment() { // Empty constructor required for DialogFragment } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().setTitle(getString(R.string.app_name)); View view = inflater.inflate(R.layout.fragment_add_note_dialog, container); return view; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); // request a window without the title dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); return dialog; } } 

Fragment_add_note_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="@android:color/white" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" > <EditText android:id="@+id/addNoteEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="top" android:hint="@string/clock_enter_add_note" android:imeOptions="actionDone" android:inputType="textCapSentences|textMultiLine" android:lines="5" /> <Button android:id="@+id/submit" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@drawable/login_button" android:text="@string/submit_button" android:textColor="@android:color/white" /> </LinearLayout> 

Introduzca aquí la descripción de la imagen

Gracias por adelantado.

Esta es la solución que descubrí para manejar este problema:

 @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); return dialog; } @Override public void onStart() { super.onStart(); Dialog dialog = getDialog(); if (dialog != null) { dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); } } 

Editar:

Puede utilizar el código siguiente en el método de fragmento de onCrateView antes de devolver la vista inflada.

 getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 

¿Ha intentado usar la respuesta de Elvis de Cómo hacer que un diálogo de alerta llene el 90% del tamaño de la pantalla ?

Es el siguiente:

 dialog.getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 

Actualizar:

Por encima del código debe agregarse dentro del método onStart() del DialogFragment .

LayoutParams.FILL_PARENT está en desuso utilizar LayoutParams.MATCH_PARENT .

Esto funciona para mí

Crea tu estilo personalizado:

  <style name="DialogStyle" parent="Base.Theme.AppCompat.Dialog"> <item name="android:windowMinWidthMajor">97%</item> <item name="android:windowMinWidthMinor">97%</item> </style> 

Utilice este estilo en su diálogo

 public class MessageDialog extends DialogFragment { @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NO_TITLE, R.style.DialogStyle); } // your code } 
  <!-- A blank view to force the layout to be full-width --> <View android:layout_width="wrap_content" android:layout_height="1dp" android:layout_gravity="fill_horizontal" /> 

En la parte superior de mi esquema de diálogo hizo el truco.

Para mí, funcionó cuando reemplazé al padre LinearLayout del diseño inflado en onCreateView por RelativeLayout. No se requiere ningún otro cambio de código.

En mi caso también usé el siguiente enfoque:

  @Override public void onStart() { super.onStart(); getDialog().getWindow().setLayout(LayoutParams.MATCH_PARENT, (int) getResources().getDimension(R.dimen.dialog_height)); } } 

Pero aún quedaban pequeños espacios entre los bordes izquierdo y derecho del cuadro de diálogo y los bordes de la pantalla en algunos dispositivos Lollipop + (por ejemplo, Nexus 9).

No era obvio, pero finalmente me di cuenta de que para que sea de ancho completo a través de todos los dispositivos y el fondo de la ventana de plataformas se debe especificar dentro styles.xml como el siguiente:

 <style name="Dialog.NoTitle" parent="Theme.AppCompat.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:padding">0dp</item> <item name="android:windowBackground">@color/window_bg</item> </style> 

Y, por supuesto, este estilo debe utilizarse cuando creamos el cuadro de diálogo de la siguiente manera:

  public static DialogFragment createNoTitleDlg() { DialogFragment frag = new Some_Dialog_Frag(); frag.setStyle(DialogFragment.STYLE_NO_TITLE, R.style.Dialog_NoTitle); return frag; } 
 public class FullWidthDialogFragment extends AppCompatDialogFragment { @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NORMAL, R.style.Theme_AppCompat_Light_Dialog_Alert); } 

}

Y si desea mucha más flexibilidad puede extender AppCompat_Dialog_Alert y atributos personalizados

Utilizar esto en el método onCreateView de DialogFragment

  Display display = getActivity().getWindowManager().getDefaultDisplay(); int width = display.getWidth(); int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, **220**, getResources().getDisplayMetrics()); getDialog().getWindow().setLayout(width,px); 

220 es la altura del fragmento de diálogo, cámbiela como desees

Usuario AlertDialog.Builder dentro de su DialogFragment. Añadir en el método onCreateDialog como este. Y en onCreateView no hacer nada.

 public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); View view = LayoutInflater.from(getContext()).inflate(R.layout.gf_confirm_order_timeout_dialog, null); final Bundle args = getArguments(); String message = args.getString(GfConstant.EXTRA_DATA); TextView txtMessage = (TextView) view.findViewById(R.id.txt_message); txtMessage.setText(message); view.findViewById(R.id.btn_confirm).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mListener != null) { mListener.onDialogConfirmOK(); } } }); builder.setView(view); Dialog dialog = builder.create(); dialog.setCanceledOnTouchOutside(false); dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); return dialog; } 

Cree un estilo personalizado en su archivo style.xml. Simplemente copie este código en su archivo style.xml

 <style name="CustomDialog" parent="@android:style/Theme.Holo.Light" > <item name="android:windowBackground">@null</item> <item name="android:windowIsFloating">true</item> </style> 

A continuación, en el método createDialog de su DialogFragment, cree el objeto de diálogo por el código

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

Esto está funcionando para mí y espero que esto te ayude también

  • Cómo pasar datos de un fragmento a un dialogFragment
  • No se puede instanciar fragmento - java.lang.RuntimeException
  • Cómo saber cuando Fragmento se vuelve invisible
  • Android Poner la animación en la página de desplazamiento en la vista paginador utilizando fragmento
  • Android - ¿En qué hilo se ejecutan los fragmentos?
  • Repoblando valores en Android Fragment onResume
  • reproducir la vista del fragmento a través del botón
  • Android throw InflateException binario línea de archivo xml: Error al inflar fragmento de clase
  • Cómo abrir el cajón de navegación en el botón de clic en el fragmento principal?
  • GetFragmentManager con API8
  • Reemplazar un fragmento mediante programación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.