我已经创建了这个布局,它使用了几个嵌套的相对布局,我看到一些帖子说应该使用相对布局而不是嵌套线性布局。
如何嵌套相对布局?嵌套布局的缺点是什么(如下面的xml代码)
如果有任何缺点,有人可以推荐更好的方法吗?提前谢谢。
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>
答案 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)
根据我的理解,这样做没有任何问题,尽管你应该尽可能避免嵌套布局。