Android ImageView在GingerBread下面的FrameLayout里面不match_parent

我正在为聊天室build立一个讲话泡泡。 每个讲话泡泡都有附带的xml布局。

我通过将textView设置为wrap_content ,将语音气泡imageView设置为match_parent ,将frame_layout设置为wrap_content来实现此目的 。 这样,文本后面的speech_bubble图像根据泡泡文本的大小进行缩放

我在textView上设置宽度以匹配父级和高度wrap_content,由于某种原因,它完全按照Ice Cream Sandwich (Android 4.1)中的要求工作。 然而在姜饼里面 ,imageView语音气泡不会缩放到match_parent,这样文字就可以整齐地放在气泡里面。 姜饼里面的imageView 始终保持相同的大小 ,而不pipe文字和文字在泡泡外溢出 。 即使frameLayout展开为wrap_content ,但imageView并不像它应该的那样是match_parent

任何想法,为什么发生这种情况? 是否有另一个参数,我可以设置通过XML或我可以调用编程来解决这个问题的方法?

谢谢!

ICS中的正确行为:

ICS中的正确行为

GingerBread中不正确的行为 :姜饼中的错误行为

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> 

Solutions Collecting From Web of "Android ImageView在GingerBread下面的FrameLayout里面不match_parent"

从外观来看,这是由于尺寸的循环依赖造成的:内部文本和图像大小依赖于FrameLayout( match_parent ),而FrameLayout的大小取决于它所包含的内容( wrap_content )。 正因为这种原因,涉及多个孩子的情况下,不鼓励使用FrameLayout。 为了安全起见,我build议将FrameLayout更改为RelativeLayout ,并在内部图像视图上设置以下属性:

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

这将确保您的图片始终匹配您的文字的大小。