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?
- DialogFragment setCancelable propiedad no funciona
- Permitir el toque externo para DialogFragment
- Cómo reemplazar un fragmento de diálogo de pantalla completa con otro sin mostrar la actividad de los padres?
- DialogFragment Cerrar Evento
- AndroidRuntimeException: requestFeature () debe ser llamado antes de agregar contenido
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,
- Barra de herramientas en DialogFragment
- Iniciar un fragmento de diálogo en el botón de clic de un adaptador de base personalizado> getView
- Android - después del cambio de orrientación cambia el fragmento objetivo en el fragmento de diálogo
- Estilizar texto en un DialogFragment
- ¿Utilizando getFragmentManager () vs getSupportFragmentManager ()?
- Cómo retener correctamente un DialogFragment a través de la rotación?
- Android dialogFragment "a veces" no muestra la vista web
- AlertDialog con vista personalizada: redimensionar para ajustar el contenido de la vista
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.