Android ImageView no coincide con_parent dentro de FrameLayout por debajo de GingerBread

Estoy tratando de construir una burbuja de discurso para una sala de chat. Cada una de las burbujas de discurso tiene la disposición xml adjunta.

Estoy logrando esto poniendo el textView en wrap_content , la burbuja de discurso imageView en match_parent y el frame_layout en wrap_content . De modo que la imagen speech_bubble detrás del texto varía según la cantidad de texto en la burbuja.

Establecer el ancho en el textView para que coincida con el padre y la altura de wrap_content y por alguna razón, funciona perfectamente como se requiere en Ice Cream Sandwich (Android 4.1). Sin embargo, en Gingerbread la burbuja interna del discurso imageView no escala a match_parent para que el texto pueda encajar perfectamente dentro de la burbuja. En Gingerbread el imageView interior permanece siempre del mismo tamaño , independientemente del texto y el texto se desborda fuera de la burbuja . A pesar de que el frameLayout se expande a wrap_content , el imageView no coincide con match_parent como se supone.

¿Alguna idea de por qué esto esta pasando? ¿Hay otro parámetro que puedo establecer a través de xml o un método que puedo llamar por programación para solucionar esto?

¡Gracias!

Comportamiento correcto en ICS:

Comportamiento correcto en ICS

Comportamiento incorrecto en GingerBread: comportamiento incorrecto en GingerBread

Diseño XML:

<merge xmlns:android="http://schemas.android.com/apk/res/android"> <FrameLayout       xmlns:android="http://schemas.android.com/apk/res/android"       android:id="@+id/speech_bubble_framelayout"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:orientation="horizontal"       android:background="@color/color_transparent"       android:layout_toRightOf="@id/message_user_imageView">     <ImageView xmlns:android="http://schemas.android.com/apk/res/android"           android:id="@+id/message_background_imageview"           android:layout_width="match_parent"           android:layout_height="match_parent"           android:layout_margin="5dp"           android:scaleType="fitXY"           android:layout_centerInParent="true"           android:textColor="@color/color_brown_mud"           android:background="@drawable/chat_bubble_flipped"         />     <TextView         android:id="@+id/message_textView"         android:layout_width="wrap_content"         android:layout_height="match_parent"         android:maxEms="10"         android:background="@color/color_transparent"         android:textColor="@color/color_brown_uiDesign_pallete"         android:textSize="15sp"         android:textStyle="bold"         android:gravity="center_horizontal"         android:text="Message"         android:padding="5dp"         android:layout_marginLeft="25dp"         android:layout_marginRight="20dp"         android:layout_marginTop="15dp"         android:layout_marginBottom="15dp"         />   </FrameLayout> </merge> 

Desde el aspecto de ello, esto es causado por una dependencia circular en sus tamaños: el texto interno y el tamaño de la imagen depende de FrameLayout ( match_parent ), mientras que el tamaño de FrameLayout depende de lo que está contenido dentro ( wrap_content ). El uso de un FrameLayout se desaconseja donde más de un niño está involucrado exactamente por este motivo. Por seguridad, recomiendo cambiar el FrameLayout a RelativeLayout y establecer la siguiente propiedad en la vista de imagen interna:

 android:layout_alignTop="@+id/message_textview" android:layout_alignBottom="@+id/message_textview" 

Esto asegurará que su imagen siempre coincida con el tamaño de su texto.

  • El primer elemento de un ListView no funciona correctamente en Android
  • ListView vacío a pesar de los elementos agregados al adaptador en algún momento al reanudar la aplicación
  • El color de fondo de la lista se vuelve blanco al desplazarse cuando se utiliza android.support.v4.app.ListFragment;
  • OnCreateOptionsMenu antes de onCreate android
  • Disposición de la vista Lista de Android Similar a Google play
  • Onclicklistner no funciona en el listview de fragmentos
  • Poner una vista de texto encima de un fragmento de lista
  • Cómo ejecutar la acción después de pulsar el botón positivo de DialogFragment
  • Comunicación entre Fragmentos
  • Cómo agregar márgenes por encima y por debajo de un ListView en Android?
  • Cómo mostrar listview personalizado utilizando fragmentos de lista en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.