为什么把后声明的控件放置在前面声明的控件之上会变得不可见

xml代码如下

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.example.testforlayout.MainActivity" >

<RelativeLayout

android:id="@+id/setTime1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

android:layout_marginLeft="50dp"

android:layout_marginTop="250dp"

android:orientation="vertical"

android:background="#00FF00"

>

<TimePicker

android:id="@+id/timePicker1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_marginLeft="50dp"

/>

<TextView

android:id="@+id/text11"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_above="@id/timePicker1"

android:text="测试字样"

android:textSize="30sp"

/>

</RelativeLayout>

</RelativeLayout>

图片描述
然而并不会显示TextView的内容,我想知道这是为什么?(在什么情况下会看不到自己设置的控件)
而且有的时候后声明的控件设置为toLeftOf前一个控件也会看不到该控件
(我本人并不想过多地去设置精确的DP数值)
除此之外我还想知道安卓相对布局中各属性的细节,到底在相对布局中给一个控件设置几个必要的属性才会使他放到合适而准确的位置(比如我先声明了一个控件,我想让后声明的控件的竖直方向的中点与前面声明控件的竖直方向的中点对齐),还有目前怎么能有效率
地组织安卓控件的摆放位置,我也希望能推荐我一篇好的文章去指导我如何
准确地去摆放控件的位置,希望高手们能逐条解答我的问题,感激不尽!

回答:

我的回答都是比较通俗的解释,因为我并不太清楚真正的原理。基于经验而谈:
第一个问题:解析包括RelativeLayout在内的ViewGroup都是对child逐个布局的,也就是ViewGroup中的每个View都受限于Viewgroup和已经布局完成的View,如果你把你写的TimePicker 加上一个android:layout_alignParentBottom="true" 你会发现TextView出来了,这说明TextView是布局了的,只是依赖于TimePicker 他被布局出去屏幕了。所以说布局的时候通常应该从上到下 从左到右 。

第二个问题:http://blog.csdn.net/jiangxinyu/article/details/8611228 随便搜了一篇博客 足以解决你的第二个问题。

第三个问题:这个来源于经验和学习,多看看别人优秀的源码,多百度谷歌。
我的经验是,简单布局就是RelativeLayout和LinearLayout,复杂的需要大量嵌套的就是用RelativeLayout嵌套LinearLayout,多使用layout_weight。优秀不止一种,看自己的习惯。

以上是 为什么把后声明的控件放置在前面声明的控件之上会变得不可见 的全部内容, 来源链接: utcz.com/p/175969.html

回到顶部