将relativelayout拆分为两个,同时在中心有一个对象

时间:2014-07-12 15:53:12

标签: android layout

我想要的是两个布局在布局中具有相同的大小,并在外部布局的中间有一个ImageView。

enter image description here

我做了类似的事情:

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#EEEEEE"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:background="#FF0000"
                android:orientation="vertical"
                android:layout_weight="1">

             </LinearLayout>    


        <RelativeLayout
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_centerInParent="true">
            <ImageView
                android:id="@+id/ac_imageView_profile"
                android:layout_width="90dp"
                android:layout_height="90dp"
                android:scaleType="centerCrop"
                android:layout_centerHorizontal="true"
                android:adjustViewBounds="true" />

            <ProgressBar
                android:id="@+id/ac_myprofileimg_progressbar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"/>
        </RelativeLayout>


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:background="#84B5FE"
                android:orientation="vertical"
                android:layout_weight="1">

             </LinearLayout>    
        </LinearLayout>

    </RelativeLayout>

3 个答案:

答案 0 :(得分:0)

首先,不推荐使用fill_parent,您必须使用match_parent。然后你必须一步一步地做。

您可以使用LinearLayout放置两个彩色矩形。如果您希望它们具有相同的高度,则只需为子项的android:layout_weight属性设置相同的值。

如果要在此布局的中间添加ImageView,则需要将LinearLayout包裹在RelativeLayout内。

最后,您现在可以使用ImageView属性在RelativeLayout的中间添加android:layout_centerInParent

以下示例应该为您提供所期望的内容:

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <View
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="{first color}" />

        <View
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="{second color (yellow)}" />
    </LinearLayout>

    <ImageView
        android:width="wrap_content"
        android:height="wrap_content"
        android:layout_centerInParent="true"
        ... />

</RelativeLayout>

答案 1 :(得分:0)

您可以尝试以下结构:

<FrameLayout 
 android:layout_width="match_parent"
 android:layout_height="match_parent">

<RelativeLayout>
// both the relative layouts are here
</RelativeLayout>

<ImageView>

</FrameLayout> 

答案 2 :(得分:0)

动态分配高度

Display display = getWindowManager().getDefaultDisplay();
    DisplayMetrics outMetrics = new DisplayMetrics ();
    display.getMetrics(outMetrics);

    float height  = outMetrics.heightPixels /getResources().getDisplayMetrics().density;
    height/=2;
    imageView1.getLayoutParams().height=(int)height;
    imageView2.getLayoutParams().height=(int)height;

对于一个使用alignparenttop = true而对第二个使用alignparentbottom = true 而对于中间人。 。添加center_horizo​​ntal = true和center_vertical = true