Estoy trabajando en una aplicación de Android en la que estoy usando DialogFragment
para mostrar el diálogo, pero su ancho es muy pequeño. ¿Cómo puedo ajustar este ancho fill_parent
?
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>
Respuestas:
Esta es la solución que descubrí para manejar este problema:
Editar:
Puede utilizar el siguiente código en el
onCrateView
método de Fragmento antes de devolver la vista inflada.fuente
dialog.getWindow().setBackgroundDrawable(null);
getDialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
elonResume()
método de DialogFragment . No funcionó en elonCreateView()
método. Modifiqué ligeramente la respuesta dedialog
agetDialog()
.setLayout
en elonStart
método funciona perfectamente. Gracias.¿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:
Actualizar:
El código anterior debe agregarse dentro del
onStart()
método deDialogFragment
.fuente
WindowManager.LayoutParams.FILL_PARENT
.ViewGroup.LayoutParams
, por lo que funciona perfectamente bien de cualquier manera.onStart
método de DialogFragment para funcionar.onCreateDialog
Esto funcionó para mí
Crea tu estilo personalizado:
También puede intentar utilizar el padre correcto para que coincida con sus otros diálogos. por ejemplo
parent="ThemeOverlay.AppCompat.Dialog"
y así sucesivamente.Usa este estilo en tu diálogo
fuente
Para mí, funcionó cuando reemplacé el padre LinearLayout del diseño inflado en onCreateView por RelativeLayout. No se requiere ningún otro cambio de código.
fuente
en la parte superior de mi diseño de diálogo hizo el truco.
fuente
y si desea mucha más flexibilidad puede extender AppCompat_Dialog_Alert y atributos personalizados
fuente
Basado en otras soluciones, he creado la mía propia.
fuente
En mi caso también utilicé el siguiente enfoque:
Pero todavía había pequeños espacios entre los bordes izquierdo y derecho del diálogo y los bordes de la pantalla en algunos dispositivos Lollipop + (por ejemplo, Nexus 9).
No era obvio, pero finalmente descubrí que para que sea de ancho completo en todos los dispositivos y plataformas , el fondo de la ventana debe especificarse dentro de styles.xml de la siguiente manera:
Y, por supuesto, este estilo debe usarse cuando creamos el diálogo como el siguiente:
fuente
Quiero aclarar esto. Ambas formas son correctas, pero con diferentes DialogFragment .
Utilizando
android.app.DialogFragment
Utilizando
android.support.v4.app.DialogFragment
fuente
Otra solución que me funcionó sin efectos secundarios fue:
En su clase que extiende DialogFragment:
En tus estilos:
fuente
setStyle()
Esto me funciona perfectamente.
A través de esto, puede dar el ancho al fragmento de diálogo.
fuente
User AlertDialog.Builder dentro de su DialogFragment. Agréguelo en un
onCreateDialog
método como este. Y enonCreateView
no hacer nada.fuente
Cree un estilo personalizado en su archivo style.xml. Simplemente copie y pegue este código en su archivo style.xml
Luego, en el método createDialog de su DialogFragment, cree el objeto de diálogo por el código
Esto está funcionando para mí y espero que esto también te ayude
fuente
Así es como resolví cuando enfrenté este problema. Prueba esto.
en onActivityCreated de su DialogFragment, agregue este código de acuerdo con su necesidad ...
fuente
use esto en el método onCreateView de DialogFragment
220 es la altura del fragmento de diálogo, cámbielo como desee
fuente
en la raíz de su diseño, configure android: minWidth en un valor muy grande, por ejemplo
fuente
Intenté varias respuestas enumeradas anteriormente; no funcionaron para mí. Esta es la solución a mi problema:
En
DialogFragment()
, agregue los códigos a continuación:fuente