RelativeLayout使用手册
引言
嵌套多层的 LinearLayout,这样就会降低UI Render的效率(渲染速度),而且如果是listview或者GridView上的 item,效率会更低,另外太多层LinearLayout嵌套会占用更多的系统资源,还有可能引发stackoverflow; 但是如果我们使用RelativeLayout的话,可能仅仅需要一层就可以完成了,以父容器或者兄弟组件参考+margin +padding就可以设置组件的显示位置,是比较方便的!当然,也不是绝对的,具体问题具体分析吧! 总结就是:尽量使用RelativeLayout + LinearLayout的weight属性搭配使用吧!
属性图
设置布局所有组件的对齐方式
- android:gravity: 设置容器内各个子控件的对齐方式
- android:ignoreGravity: 如果为哪个组件设置了这个属性后那么该组件不受gravity属性的影响
- android:orientation:表示排列方向
根据父容器来定位
想位于哪,那个属性就设置为true
左对齐:android:layout_alighParentLeft
右对齐:android:layout_alighParentRight
顶端对齐:android:layout_alighParentTop
底部对齐:android:layout_alighParentBottom
水平居中:android:layout_centerHorizontal
垂直居中:android:layout_centerVertical
中央位置:android:layout_centerInParent
根据指定元素定位
指定的元素必须是同一层次的组件
左边:android:layout_toLeftOf
右边:android:layout_toRightOf
上方:android:layout_above
下方:android:layout_below
对齐上边界:android:layout_alignTop
对齐下边界:android:layout_alignBottom
对齐左边界:android:layout_alignLeft
对齐右边界:android:layout_alignRight
水平居中layout_centerHorizontal
垂直居中layout_centerVertical
中间位置layout_centerInParent
图中的组件1和组件2是同一层次容器组件 而组件1与组件3不是同一个层次的组件,所以组件3不能通过组件1或组件2来进行定位。
margin与padding的区别
首先margin代表的是偏移,比如marginleft = "5dp"表示组件离容器左边缘偏移5dp; 而padding代表的则是填充,而填充的对象针对的是组件中的元素,比如TextView中的文字 比如为TextView设置paddingleft = “5dp”,则是在组件里的元素的左边填充5dp的空间! margin针对的是容器中的组件,而padding针对的是组件中的元素,要区分开来!
同时,margin可以设置为负数。