Altura de diálogo personalizada de Android
Estoy aprendiendo acerca de los cuadros de diálogo de Android y estoy confundido acerca de lo que determina su altura. Si utilizo este XML para mi diseño de diálogo. . .
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/AButton" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_alignParentRight="true" android:layout_marginLeft="10px" android:text="Click Me to Dismiss" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_toLeftOf="@id/AButton" android:text="Click this button: " /> <ImageView android:id="@+id/an_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="42px" android:src="@drawable/screw50"> </ImageView> />
Recibo este diálogo. . .
- El diálogo de Android se descarta en el segundo clic. ¿Por qué?
- Pantallas negras sólidas al llamar a Dialogs en onCreate ()
- LocationSettingsRequest para activar GPS - onActivityResult () omitido
- Cambiar el contenido de un cuadro de diálogo de Android después de la creación
- La interfaz se está desvaneciendo pero el cuadro de diálogo de alerta no se muestra
Pero Developer.Android.com dice que …
" WRAP_CONTENT, lo que significa que la vista quiere ser lo suficientemente grande como para incluir su contenido (además de relleno) "
… así que ¿por qué el diálogo es mucho más alto de lo que necesita ser?
Si reemplazo la altura de diseño por
android:layout_height="200px"
Hace un diálogo correctamente corto pero no quiero usar alturas de píxel explícitas (no es una buena práctica). ¿Cómo hago que el diálogo sea lo suficientemente grande para su contenido?
- Android hace que el cuadro de diálogo esté completo con la barra de estado mostrando
- ¿Cómo agregar el título al cuadro de diálogo personalizado?
- Android no puede obtener el tamaño de archivo de diálogo
- Cuadro de diálogo o formulario donde el usuario puede elegir para introducir detalles o cancelar
- Cambiar el color del diálogo Datepicker para Android 5.0
- Cómo cerrar / cancelar / descartar un Diálogo del sistema de forma programática (Android)
- Cómo obtener datos de un cuadro de diálogo personalizado
- Cómo agregar el diseño de fondo en el cuadro de diálogo Modal BottomSheet?
Tienes la altura de tu TextView para fill_parent. ¿Es posible que esto, combinado con la altura de la RelativeLayout a wrap_content está empujando su altura al tamaño máximo? ¿Qué sucede si cambia la altura de TextView a wrap_content?
Para agregar, el SDK de Android dice que los hijos de un RelativeLayout no pueden tener una dependencia en el Layout, como align_parent_bottom. Supongo que fill_parent es una dependencia y por lo tanto está rompiendo el diseño.
Hmm eso es extraño. Yo uso <LinearLayout/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@android:color/white"> <TextView android:id="@+id/message" android:padding="5dp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp"/> ... </LinearLayout>
Y envuelve mi contenido muy bien.
He estado trabajando en el mismo problema los últimos 2 días. Finaly funciona correctamente usando algunos atributos en el estilo de mi diálogo.
Aquí está el estilo que estoy usando:
<style name="SearchFieldSetterDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowIsFloating">true</item> <item name="android:windowNoTitle">true</item> <item name="android:gravity">bottom</item> </style>
Los atributos clave son:
<item name="android:windowIsFloating">true</item> <item name="android:windowNoTitle">true</item>
El primero, supongo, necesita decirle al windowManager que ponga Cuadros alrededor del diálogo y el segundo para sacar el espacio reservado para el título del diálogo.
Con este estilo y el siguiente diseño i finalmente lo tenía funcionando:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> ... </LinearLayout>
Mi problema con la solución ths es que con el android:windowIsFloating
setted como true
y más temprana plataforma entonces 3.0 no puedo encontrar una manera de hacer el diálogo witdh para llenar la pantalla, incluso si el layout_width
es fill_parent
como fill_parent
Espero que esto ayude a alguien … y sry por mi mal inglés