android学习总结(16.08.23)LinearLayout(线性布局)中控件的摆放位置——orientation,gravity,layout_gravity的关系

已经有一段时间没有写博客了,之前一直都是把知识点零碎地写在云笔记上,今天就来整理一下


刚刚接触线性布局时,我被线性布局中控件的摆放位置给搞糊涂了,看着那几个参数总觉得控件的位置和自己猜想的不一样。后来把规律搞懂了,其实也并不算难懂。以下是我所总结的规律。


三个参数:orientation,gravity,layout_gravity 

orientation,gravity和layout_gravity这三个参数共同决定了控件在线性布局的容器中的位置

其中orientation和gravity是LinearLayout的参数,layout_gravity一般是子控件的参数
orientation  容器中控件大致的排列方式   vertical 垂直  horizontal水平(默认值)
gravity   对齐方式
layout_gravity  子元素在父元素中的对齐方式


三个参数的关系(如何看布局)

orientation : 将容器分成若干个横向或纵向的区域(horizontal则划分成纵向区域),每一个区域中只能有一个View
gravity 若干个区域的排列方式/对齐方式(如,值为left则所有区域从左到右排列)
layout_gravity  每一个区域中只有一个View,layout_gravity决定一个View在其所属区域中的位置

例:

    
布局预览:
android学习总结(16.08.23)LinearLayout(线性布局)中控件的摆放位置——orientation,gravity,layout_gravity的关系_第1张图片
这个按钮位于容器的右下角
在这个线性布局中,三个参数可以这样理解:

①android:orientation="vertical"   ,按钮大致呈纵向分布,将容器划分成若干个横向(打横)的区域
②android:gravity="bottom"  被划分的区域以底部对其
③android:layout_gravity="right"  按钮在其所占区域中的邮编
④只有一个按钮,所以这个按钮占用底部的区域,并落在该区域的右侧,此时即可看出按钮在容器的右下角


参数值失效

对于gravity和layout_gravity这两个关键字,在某些情况下他们的某些值不能使用(失效)
①orientation="horizontal"
容器被划分成若干个纵向(打竖)的区域,每个区域是纵向的,他们是横着排列的,
对于gravity:区域横向排列,只能指定其横向排列的方式,而与纵向有关的值会失效,比如top和 bottom,center_vertical会失效
对于layout_gravity:在纵向的区域中,只能决定View在该区域的上下位置,所以横向的值将会失效,如left,right,center_horizontal会失效

②orientation="vertical"
容器被划分成若干个横向(打横)的区域,每个区域是横向的,他们是竖着排列的,
对于gravity:区域纵向排列,只能指定其纵向排列的方式,而与横向有关的值会失效,比如left和 right,center_horizontal会失效
对于layout_gravity:在横向的区域中,只能决定View在该区域的左右位置,所以纵向的值将会失效,如top,bottom,center_vertical会失效


参数的默认值

orientation:默认值为horizontal(横向)
gravity和layout_gravity的默认值为top或left,top和left在orientation去不同值时总会有一个失效,没失效的值就是默认值


你可能感兴趣的:(android)