DialogFragment establecer altura de diálogo
Acabo de utilizar creado por el primer diálogo utilizando DialogFragment. Todo funciona muy bien, pero no puedo obtener el cuadro de diálogo para envolver su diseño. Mi diseño tiene la altura de todos los elementos para wrap_content
.
En MyFragmentDialog
no puedo incluso encontrar un método que implicaría que se puede utilizar para establecer la altura del FragmentDialog
. ¿Qué me estoy perdiendo? ¿Cómo puedo hacer que un DialogFragment encaje su contenido?
- Android DialogFragment Redimensionamiento automático
- Callback de DialogFragment en el cambio de orientación
- Añadir un fragmento a un diálogo
- Disposición de esquina redonda de Android en el cuadro de diálogo
- Cómo reemplazar un fragmento de diálogo de pantalla completa con otro sin mostrar la actividad de los padres?
El método onCreateView
:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Set title for this dialog getDialog().setTitle("Backup & Restore"); getDialog().setCancelable(true); View v = inflater.inflate(R.layout.backup_restore, container, false); TextView msg = (TextView) v.findViewById(R.id.br_label_message); msg.setText("Backups are placed in the Downloads Directory:\n" + BACKUP_PATH.getAbsolutePath()); // TextView files_label = (TextView) v.findViewById(R.id.label_restore); Spinner files = (Spinner) v.findViewById(R.id.br_restore_file); if (BACKUP_PATH.exists()) { FilenameFilter filter = new FilenameFilter() { public boolean accept(File dir, String filename) { File sel = new File(dir, filename); return filename.contains(FTYPE) || sel.isDirectory(); } }; mFileList = BACKUP_PATH.list(filter); } else { mFileList = new String[0]; } ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(getActivity(), android.R.layout.simple_spinner_item, mFileList); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); files.setAdapter(adapter); files.setOnItemSelectedListener(this); Button backup = (Button) v.findViewById(R.id.br_backup_btn); Button restore = (Button) v.findViewById(R.id.br_restore_btn); Button cancel = (Button) v.findViewById(R.id.br_cancel_btn); backup.setOnClickListener(this); restore.setOnClickListener(this); cancel.setOnClickListener(this); return v; }
Este es el diseño:
<?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="wrap_content" android:orientation="vertical" android:padding="8dp" > <TextView android:id="@+id/br_label_message" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="8dp" android:text="" android:textSize="14sp" /> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TableRow android:id="@+id/br_tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/br_label_restore" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingRight="8dp" android:text="Restore file" android:textSize="14sp" /> <Spinner android:id="@+id/br_restore_file" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </TableRow> </TableLayout> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TableRow> <Button android:id="@+id/br_restore_btn" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight=".5" android:text="Restore" android:textSize="14sp" /> <Button android:id="@+id/br_backup_btn" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight=".5" android:text="Backup" android:textSize="14sp" /> </TableRow> </TableLayout> <Button android:id="@+id/br_cancel_btn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Cancel" android:textSize="14sp" /> </LinearLayout>
Gracias,
- Cómo hacer el ancho de DialogFragment a Fill_Parent
- Cómo crear un cuadro de diálogo personalizado en android?
- Después de cambiar la orientación de la pantalla, el diálogo aparece aparentemente sin ninguna llamada
- GetLocationOnScreen devuelve la posición antigua después de la rotación
- DialogFragment Cerrar Evento
- Android DialogFragment está en blanco
- ¿Cómo conservar el estado del diálogo de fecha y hora en el cambio de orientación?
- BottomSheetDialogFragment - escucha despedido por evento de usuario
Resulta ser un problema con LinearLayout
pesar de establecer una altura en él, en DialogFragment
parece estar tomando más espacio de lo que quiero. Cambié el diseño para ser un RelativeLayout
el Dialog
del contenido parece reajustar para caber el contenido.
Usted puede hacer que funcione con todo tipo de diseño en la adición del tamaño de la disposición en el onResume de su dialogFragment:
@Override public void onResume() { super.onResume(); Window window = getDialog().getWindow(); window.setLayout(300, 300); window.setGravity(Gravity.CENTER); }
Tomé un salto en el cuadro de diálogo api por lo que no estoy seguro, pero puede intentar llamar a getWindow en el diálogo y luego llamar a setLayout (width, height)
getDialog().getWindow().setLayout(300,300);
No veo la parte superior de su etiqueta LinearLayout, pero he visto casos en los que todo lo que se necesitaba era el
android:orientation="vertical"
XML. Puede causar dolor de cabeza, pero afortunadamente es fácil de arreglar.