详解Android Widget组件RelativeLayout实例
创始人
2024-07-21 18:21:49
0

以前很少用RelativeLayout,但是这次笔者的项目用到了RelativeLayout。用起来才发现RelativeLayout太灵活了。很容易给人造成一些错误。

51CTO推荐专题:Mobile Widget

下面谈谈笔者的看法。

引用

  1. From Tutorials:  
  2.  
  3. If you find yourself using several nested LinearLayout groups, you may be able toreplace them with a single RelativeLayout  
  4.  

以上来自Tutorials,笔者理解的观点是,当有过个ViewGroup嵌套的时候,再去考虑用RelativeLayout,笔者觉得既然官方这么写,很程度是因为,RelativeLayout太灵活了,它的灵活性给我们对UI的控制多少回造成一定影响。

曾经有人跟笔者说过,RelativeLayout跟FrameLayout有一些相似,给人的感觉是分层的。有层的这个概念。
笔者觉得不是这样的,是没有层的概念的。从官方的解释上可以看出这东西就是可以设置相对布局的一个布局而已。没有层的概念。

先上段代码,更直观的看看。

Java代码

  1.     
  2.     xmlns:android="http://schemas.android.com/apk/res/android"    
  3.     android:layout_width="fill_parent"    
  4.     android:layout_height="fill_parent"    
  5.     android:background="#CCFFFF">    
  6.     
  7.         android:id="@+id/linearLayout"    
  8.         android:layout_width="fill_parent"    
  9.         android:layout_height="200dp"    
  10.         android:background="#32000033"    
  11.         android:orientation="vertical">    
  12.         
  13.             android:id="@+id/button1"    
  14.             android:layout_width="fill_parent"    
  15.             android:layout_height="wrap_content"    
  16.             android:background="#FF3300"    
  17.             android:text="Button" />    
  18.         
  19.             android:id="@+id/textView"    
  20.             android:layout_width="fill_parent"    
  21.             android:layout_height="wrap_content"    
  22.             android:layout_weight="1"    
  23.             android:text="Base"    
  24.             android:textColor="#6633FF"    
  25.             android:gravity="center" />    
  26.         
  27.             android:id="@+id/button2"    
  28.             android:layout_width="fill_parent"    
  29.             android:layout_height="wrap_content"    
  30.             android:background="#FF3300"    
  31.             android:text="Button" />    
  32.         
  33.     
  34.         android:id="@+id/button3"    
  35.         android:layout_width="100dp"    
  36.         android:layout_height="50dp"    
  37.         android:layout_centerInParent="true"    
  38.         android:layout_alignBottom="@id/linearLayout"    
  39.         android:text="button" />    
  40.    

只贴xml,activity没什么东西,就显示一下罢了。

运行效果图

运行效果图

很明显可以看出button3的下边缘是跟lineLayout的下边缘在一条水平线上的。

Java代码
 

  1. android:layout_alignBottom="@id/button1"    

但是当像上面一样设置的时候,我们可能会是想让button3的下边缘跟button1的下边缘在一个水平线,但是这些写的效果却不是按我们所想的显示,如此设置根本不起作用。

运行效果图

这其中的原因,笔者是这样认为的,首先,linearLayout,Button这些组件都是在android.widget这个包中的。他们是同一级别的。只是说linearLayout是一个ViewGroup可以再包含其他的View而已。不存在其他的优先级关系。

所以,笔者的理解是,如果Button3这个控件要同其他控件产生相互关系的话,首先他们是要位于同一级别的。(此处说的级别不是说组件级别,而是在xml文件里面设置的级别,如:linearLayout和button3是一级的话,那button2,textView,button3既是二级)
只有同一级别的才能设置关系,否则的话设置相互之间的位置关系就不会起作用。

这就是笔者的理解,根本不存在层的概念。 

【编辑推荐】

  1. Windows Phone 7 免费线下培训火热报名中
  2. 解析Android Widget开发中如何构建Activity类
  3. Android Widget开发详解
  4. Android Widget开发系列解读
  5. Android Widget工具箱

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...