线性布局、相对布局中的位置属性小结

相对布局和线性布局是用的最多的了,其中有一些属性是共有的,有的是各自独有的,有点绕,特此记录下

 

通用(但是在实际的场景中效果可能有区别)

id   height    width     这些肯定是都有的

 

layout_marginLeft     子控件相对于父控件的左边距,还有上下右 ,具体的数值 ,比如一个button相对于父控件的距离

paddingLeft                控件内文字距离控件左边距,  具体的数值  

gravity                         控件内的文本相对于这个控件的位置   

 

LinearLayout特有的

orientation:horizontal和vertical        相对布局无需设置布局方向,控件之间都是通过相对位置来排布的

layout_gravity                                控件的左右上下居中位置   这个属性必须显示定义父控件的orientation之后才生效,所以只有线性布局中起作用

layout_weight                                权重   后面详述

 

RelativeLayout  特有的(每一种只列出一个方向)

layout_alignParentRight            true/false            如果该值为true,则将该控件的右边与父控件的右边对齐,默认置于父窗口最右上,会覆盖最右上的控件

layout_alignRight          @id/....                               将该控件的右边缘与给定ID控件的右边缘对齐,并置于父窗口最上边,会覆盖最上边的控件

layout_centerHorizontal      true/false
layout_centerVertical
layout_centerInParent      

layout_above       @id/              将该控件的底部至于给定ID的控件之上,但不会左对齐,默认置于父窗口最左边,会覆盖最左边的控件 类似的还有below

layout_toLeftOf         @id/....           将该控件的右边缘和给定ID的控件的左边缘对齐,默认置于父窗口最上面,会覆盖最上面的控件

 

关于权重

 权重最基本的用法就是  对线性布局指定方向(水平或垂直)上剩余空间分配的一个规则,先把规定的大小占完,再来按比例分配剩余空间

特殊情况:

首先计算数值,所有控件加起来后可能超过屏幕大小了,这个时候剩余值就应该是负的,此时按权重分配,权重大的分得值比较大,但是负的,这个时候加上原来的值,反而变小


 权重有一个很有用的特点,在一些特殊应用场景,比如有两个控件,一个设置了权重,一个不设置权重,那么这个设置权重的控件会后加载渲染。      

比如,vertical

我们想给下面的控件设置一个高度,上面的充满剩余空间

那么下面的控件不设置权重,先从底部占一定高度,上面的控件给一个比较大的权重,就能填满剩余的空间。否则,是从上往下加载。

 

<EditText 
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:gravity="center"
         android:layout_weight="1"
         android:hint="@string/hello_world"/>
     <EditText 
         android:layout_height="wrap_content"
         android:layout_width="fill_parent"
         android:gravity="right"
         android:hint="@string/fruits"/>


这样子第一个EditText后加载,占满剩余屏幕


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章