Android:FrameLayout里面的RelativeLayout,宽度高度bug

时间:2013-12-03 11:07:00

标签: android android-layout android-fragments relativelayout android-framelayout

我有什么:

activity_comics.xml - 两个片段的布局容器:漫画列表(view_comicses.xml)和详细漫画视图

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical"
    android:id="@+id/comics_fragment_container">
</FrameLayout>

view_comicses.xml - 包含交错列表视图的片段

<com.agimind.widget.huewu.pla.lib.MultiColumnListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:pla="http://schemas.android.com/apk/res-auto"
    android:id="@+id/multicollist"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    pla:plaColumnNumber="2"
    pla:plaLandscapeColumnNumber="3">
</com.agimind.widget.huewu.pla.lib.MultiColumnListView>

view_comics_detail.xml - 漫画详细视图的片段

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/comics_image"
        android:layout_centerInParent="true" />

</RelativeLayout>

view_comicses.xmlview_comics_detail.xml片段添加到activity_comics.xml后,生成的布局应如下所示:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:id="@+id/comics_fragment_container">

    <com.agimind.widget.huewu.pla.lib.MultiColumnListView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:pla="http://schemas.android.com/apk/res-auto"
        android:id="@+id/multicollist"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        pla:plaColumnNumber="2"
        pla:plaLandscapeColumnNumber="3">
    </com.agimind.widget.huewu.pla.lib.MultiColumnListView>

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/black">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/comics_image"
            android:layout_centerInParent="true" />

    </RelativeLayout>

</FrameLayout>

但由于某些原因导致布局看起来像这样

resulting layout

RelativeLayout的宽度和高度等于match_parent,但渲染时就好等于wrap_content。为什么会这样?我为FrameLayoutRelativeLayout尝试了差异参数,但没有工作,我们将非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

RelativeLayout试图匹配FrameLayout的宽度但不能,因为MultiColumnListView在那里。然后,FrameLayout将它的可用空间分割给两个孩子。

如果希望RelativeLayout和MultiColumnListView都具有与FrameLayout(和重叠)相同的宽度,则需要将FrameLayout更改为RelativeLayout。

FrameLayout更常用于显示单个孩子。可以添加多个孩子,但是你需要为每个孩子指定android:layout_gravity来控制他们的位置。

答案 1 :(得分:0)

尝试更改RelativeLayout的背景颜色。你能在你的照片后面看到它吗?您的RelativeLayout与父级匹配,但您的ImageView包装内容。您的图像尺寸是否正确以填满屏幕?