新手:如何在我的情况下设置相对布局的属性?

时间:2011-06-30 07:35:36

标签: android android-layout android-emulator android-widget

我想将屏幕划分为4个相等的区域,例如。四个区域中的每一个都是线性布局。

我尝试使用相对布局来保存四个线性布局,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:id="@+id/up_left_area"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ffff66"
    >
        <TextView
            android:id="@+id/label1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="UP LEFT"/>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/up_right_area"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"    
        android:layout_toRightOf="@id/up_left_area"
        android:background="#ccffff">

        <TextView
            android:id="@+id/label2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="UP RIGHT"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/down_left_area"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_below="@id/up_left_area"
        android:background="#66cc33"
        >

        <TextView
            android:id="@+id/label3"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="DOWN LEFT"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/down_right_area"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/up_right_area"
        android:layout_toRightOf="@id/down_left_area"
         android:background="#cc6600">

        <TextView
            android:id="@+id/label4"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="DOWN RIGHT"/>
    </LinearLayout>
</RelativeLayout>

使用上面的xml布局代码,我在屏幕上有4个区域,但它们大小相同。如何修改我的代码以在屏幕上显示相等大小的4个区域,如

4 个答案:

答案 0 :(得分:4)

您可以使用相同layout_weight = 1的线性布局。

简化的xml:

- linearlayout orientation=vertical, layout_width=fill_parent, layout_height=fill_parent
 -- linearLayout orientation=horizontal, layout_weight=1, layout_width=fill_parent, layout_height=fill_parent
 -- -- linearLayout layout_weight=1, layout_width=fill_parent, layout_height=fill_parent
 -- -- -- .... LEFT TOP
 -- -- linearLayout layout_weight=1, layout_width=fill_parent, layout_height=fill_parent
 -- -- -- .... RIGHT TOP
 -- linearLayout orientation=horizontal, layout_weight=1, layout_width=fill_parent, layout_height=fill_parent
 -- -- linearLayout layout_weight=1, layout_width=fill_parent, layout_height=fill_parent
 -- -- -- .... LEFT BOTTOM
 -- -- linearLayout layout_weight=1, layout_width=fill_parent, layout_height=fill_parent
 -- -- -- .... RIGHT BOTTOM

......类似的东西。

答案 1 :(得分:2)

如果您想以RelativeLayout作为根布局,可以添加一个

<FrameLayout
    android:id="@+id/center_of_screen"
    android:layout_height="1px"
    android:layout_width="1px"
    android:layout_centerInParent="true"></FrameLayout>

因此,您知道屏幕的中心,然后使用LinearLayoutstoRightOf, toLeftOf, below布局属性的组合对齐4 above。)。

答案 2 :(得分:1)

我建议您使用LinearLayout作为根布局。您可以选择方向是vertical还是horizontal,但我认为这不重要。然后,您创建两个LinearLayouts并将android:layout_height(如果方向为垂直)或android:layout_width(如果方向为水平)属性设置为fill_parent,并将其设置为android:layout_weight属于"1"的财产。这样你就可以将屏幕划分为两个相等的部分。你应该做的就是将这2个部分分成两部分。希望这有帮助!

答案 3 :(得分:0)

根据http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html,维度可以是fill_parentwrap_content或特定数量的像素。您可以使用Display.getWidth()Display.getHeight()并将其中的一半传递给LayoutParams。

我不确定是否可以直接在XML中执行此操作,但这样会更优雅。