如何在FrameLayout内以相对顺序放置项目

时间:2015-08-11 15:22:03

标签: android android-layout

我有一张背景图片,它的中心是另一张较小的照片。我想在较小的图片(middle_image)下方添加一些文字。但是这个文本不应该在背景图像的底部。这是一个链接,显示了我希望最终结果如何:http://postimg.org/image/6ft6tgamd/

<FrameLayout
            android:id="@+id/messageSource"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:background="#ff0000">
            <ImageView
                android:id="@+id/background_img"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:src="@drawable/bg_image" />

            <eCity.Mobile.Android.CircularImageView
                android:id="@+id/middle_image"
                android:layout_gravity="center"
                android:layout_width="75dp"
                android:layout_height="75dp"
                android:src="@drawable/middle_image" />
</FrameLayout>

2 个答案:

答案 0 :(得分:0)

为此目的,有LinearLayout(或RelativeLayout)。

而且,您不必使用独立ImageView作为背景图片。 ViewGroupsLinearLayoutFrameLayout等)可以设置背景本身。

<LinearLayout
    android:id="@+id/messageSource"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:background="@drawable/bg_image" />

    <eCity.Mobile.Android.CircularImageView
        android:id="@+id/middle_image"
        android:layout_width="75dp"
        android:layout_height="75dp"
        android:src="@drawable/middle_image" />

    <TextView 
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/text1" />

    <TextView 
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/text2" />

</LinearLayout>

答案 1 :(得分:0)

官方文件表示 -

  

FrameLayout旨在阻挡屏幕上要显示的区域   单个项目。通常,FrameLayout应该用于保存单个   子视图,因为它可能很难组织子视图   在没有孩子的情况下可以扩展到不同屏幕尺寸的方式   相互重叠。但是,您可以将多个子项添加到a   FrameLayout并控制它们在FrameLayout中的位置   为每个孩子分配重力。

更好的选择是选择一个RelativeLayout,你可以像这样调整你的代码 -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:background="@android:color/holo_blue_bright"
    android:padding="16dp">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        android:src="@drawable/ic_launcher" />

    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#c6727272" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/profileImage"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:src="@drawable/ic_launcher" />

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/date"
            android:layout_centerHorizontal="true"
            android:text="HIgh School Reunion Dinner"
            android:textColor="@android:color/holo_blue_bright"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/venue"
            android:layout_centerHorizontal="true"
            android:text="June 25 , 8:00PM"
            android:textColor="@android:color/holo_blue_bright"
            android:textSize="16sp" />

        <TextView
            android:id="@+id/venue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:text="Cafe Ruby's,DMA Square"
            android:textColor="@android:color/holo_blue_bright" />
    </RelativeLayout>
</RelativeLayout>

enter image description here