嵌套几个相对布局是否可以

时间:2013-10-11 11:46:08

标签: android android-layout relativelayout nestedlayout

我已经创建了这个布局,它使用了几个嵌套的相对布局,我看到一些帖子说应该使用相对布局而不是嵌套线性布局。

如何嵌套相对布局?嵌套布局的缺点是什么(如下面的xml代码)

如果有任何缺点,有人可以推荐更好的方法吗?提前谢谢。

enter image description here

Xml代码:

<?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="wrap_content" >

<TextView
    android:id="@+id/view1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true" />

<RelativeLayout
    android:id="@+id/layout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/view1"
    android:gravity="center" >

    <TextView
        android:id="@+id/view2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" />

    <TextView
        android:id="@+id/view3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_toRightOf="@+id/view2" />
</RelativeLayout>

<RelativeLayout
    android:id="@+id/layout2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/layout1"
    android:gravity="center" >

    <TextView
        android:id="@+id/view4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" />

    <TextView
        android:id="@+id/view5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_toRightOf="@+id/view4" />
</RelativeLayout>

<RelativeLayout
    android:id="@+id/layout3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/layout2"
    android:gravity="center" >

    <TextView
        android:id="@+id/view6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" />

    <TextView
        android:id="@+id/view7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_toRightOf="@+id/view6" />
</RelativeLayout>

</RelativeLayout>

2 个答案:

答案 0 :(得分:2)

在Google I / O 2013(为Android编写自定义视图)的演讲中,Romain Guy澄清了导致每个人开始使用RelativeLayouts的误解。 RelativeLayout总是必须进行两次测量。总的来说,只要您的视图层次结构很简单,它就可以忽略不计。但是,如果您的层次结构很复杂,那么进行额外的度量传递可能会相当昂贵。此外,如果您嵌套RelativeLayouts,您将获得指数测量算法。

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=1m41s

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=38m04s

https://developers.google.com/events/io/sessions/325615129

您可以使用Android SDk附带的工具衡量您的用户界面效果。请查看该链接:http://developer.android.com/training/improving-layouts/optimizing-layout.html

答案 1 :(得分:0)

根据我的理解,这样做没有任何问题,尽管你应该尽可能避免嵌套布局。