Android的ImageView的不里面的FrameLayout match_parent下面姜饼

2019-07-31 15:01发布

我试图建立一个聊天室的讲话泡沫。 每个语音气泡的具有附加的XML布局。

我通过设置TextView的wrap_content,对话泡泡的ImageViewmatch_parentWRAP_CONTENTframe_layout实现这一目标。 使得文本后面的speech_bubble图像根据在气泡文本的量成比例

我设置TextView的宽度符合家长和WRAP_CONTENT高度,出于某种原因,如冰淇淋三明治需要它完美的作品 (安卓4.1)。 但是在姜饼内ImageView的语音泡不能扩展到match_parent使得文本能够完全满足需要的气泡内。 在姜饼内的ImageView 保持相同大小总是 ,无论文本和文本溢出气泡外部 。 即使FrameLayout里扩展到WRAP_CONTENT,因为它应该是在ImageView的match_parent。

为什么发生这种情况的任何想法? 难道还有其他的参数,我可以设置直通XML或者我可以调用编程解决这一问题的方法?

谢谢!

在ICS正确的行为:

在ICS正确的行为

姜饼不正确的行为: 在姜饼不正确的行为

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>

Answer 1:

从外观上来看,这是由你的大小循环依赖造成的:内部文本和图像的大小取决于的FrameLayout( match_parent ),而FrameLayout里的大小取决于什么是包含在它里面( wrap_content )。 其中一个以上的孩子参与了整整这种原因的FrameLayout里的使用气馁。 为了安全起见,我建议你改变FrameLayoutRelativeLayout ,并设置在内部图像视图以下属性:

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

这将确保图像始终匹配到你的文字的大小。



文章来源: Android ImageView does not match_parent inside FrameLayout below GingerBread