几乎包装TextView是在LinearLayout中剪切ImageView

时间:2013-06-22 02:53:22

标签: android layout

我将水平LinearLayout设置为wrap_content。 Inside是一个包含单个TextView的垂直LinearLayout,它允许多行(也包括wrap_content)和一个ImageButton(wrap_content)。有些组件具有边距和填充,因此可以很好地展开空间。

当TextView中的文本很短时,一切都很好。当文本换行到多行时,仍然可以。当文本几乎足够长以包裹时,ImageButton会被水平剪裁 - 它的左右两边都被砍掉了。如果我拉出边距并填充它可行,但当然看起来不太好。

我的猜测是布局系统正在计算文本宽度而不考虑一些边距和填充。然后它正在铺设东西,并且总的空间比TextView思想中的第一个通道少,所以它剪切了布局中的第二个项目并且遵守计算的TextView宽度。但这只是猜测。

没有写我自己的布局,有什么想法吗?

修改

这是一个来自层次结构查看器的屏幕截图,显示了剪切ImageButton的位置以及突出显示的相关XML。 ImageButton的界限与我所看到的一致:27dp宽,而圆形图像本身实际上是36dp宽,而ImageButton在每一侧都指定了4dp填充。

Screen shot of hierarchy viewer

同样,我必须仔细选择那个文字:任何更短的按钮都很好;更长,它会换行,按钮再好了。

修改

而且,这是我的XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/messageBubble"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:minHeight="@dimen/message_bubble_min_height"
        android:layout_alignTop="@id/avatar"
        android:layout_alignLeft="@id/avatar"
        android:layout_marginTop="@dimen/message_bubble_margin_top"
        android:layout_marginLeft="@dimen/message_bubble_inset"
        android:layout_marginRight="@dimen/message_inbound_padding_inside"
        android:paddingLeft="@dimen/message_bubble_padding_outside"
        android:paddingRight="@dimen/message_bubble_padding_inside"
        android:paddingTop="@dimen/message_bubble_padding_v"
        android:paddingBottom="@dimen/message_bubble_padding_v"
        android:orientation="horizontal">

    <LinearLayout
            android:id="@+id/contentContainer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:orientation="vertical">
        <TextView
                android:id="@+id/messageBody"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="@dimen/message_body_margin_outside"
                android:layout_marginRight="@dimen/message_body_margin_inside"
                android:layout_marginTop="@dimen/message_body_margin_v"
                android:layout_marginBottom="@dimen/message_body_margin_v"
                android:gravity="left"
                android:autoLink="all"
                android:textSize="17dp" />
    </LinearLayout>

    <include layout="@layout/view_message_action_btn" />

</LinearLayout>

包含的view_message_action_btn:

<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/actionButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@null"
    android:src="@drawable/action_btn"
    android:paddingLeft="@dimen/message_action_btn_padding_h"
    android:paddingRight="@dimen/message_action_btn_padding_h" />

0 个答案:

没有答案