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. . .

texto alternativo

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?

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

  • Android Prevent Bluetooth Dialing Dialog
  • ¿Cómo actualizar los valores de setMultiChoiceItems en onPrepareDialog?
  • ¿Cómo hacer transparente un diálogo personalizado?
  • Problema con el cuadro de diálogo de alerta personalizada
  • ¿Cómo evitar que ProgressDialog descarte el cambio de rotación de la pantalla en Android?
  • Android muestra otro diálogo desde un diálogo
  • Diálogo personalizado de Android
  • Devolver la cadena del fragmento de diálogo a Actividad
  • SupportMapFragment en DialogFragment
  • Diálogo de alerta en android no debe descartar
  • Se desactiva el cuadro de diálogo personalizado cuando hago clic fuera de él
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.