本文主要介绍Android的常用布局,如FrameLayout、LinearLayout和RelativeLayout。感兴趣的朋友可以参考一下。
很多开发者一听说安卓终端的屏幕尺寸和屏幕分辨率各种各样,就觉得安卓开发在屏幕适配方面一定很头疼。因为在Android出现之前,开发者所知道的UI解决方案大致分为两类:
1.Web开发中的CSS,一层一层。
2.计算iOS开发中每个UIView的大小。
以上两种方案,无论哪种方案面对严重碎片化的安卓终端,都是一场噩梦。幸运的是,Android提供了另一种应对严重终端碎片化的解决方案,那就是布局和9补丁。
这里我想说一下布局。Android SDK刚出来的时候,Android提供了AbsoluteLayout、FrameLayout、LinearLayout、RelativeLayout、Tablelayout五种布局来应对终端碎片化问题。
然而Android很快发现AbsoluteLayout是一个愚蠢的方案,在Android 1.5系统中已经不再支持。在剩下的四种布局中,仍然支持Tablelayout,但是由于Fragment和新的TabLayout的出现,博主断言Tablelayout很快就会消亡,被移除只是时间问题。
所以安卓的五种基本布局只有三种(这里是基本布局,安卓支持包里介绍的新布局不算)。这里有三种基本布局。
一.框架布局
FrameLayout应该是Android系统中最简单的布局了。默认情况下,FrameLayout中的所有元素都基于FrameLayout控件的顶点,逐层重叠,添加的元素覆盖前面的元素。
先来个演示吧。代码如下:
框架布局
xmlns:Android=' http://schemas . Android . com/apk/RES/Android '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '
视角
android:layout_width='200dp '
android:layout_height='200dp '
android:background='#ff0000'/
视角
android:layout_width='200dp '
android:layout_height='200dp '
android:background='#000000'/
视角
android:layout_width='200dp '
android:layout_height='200dp '
android:layout_margin='100dp '
android:background='#00ff00'/
/框架布局
运行结果如下:
在代码中,有三个视图,但在运行结果中只能看到两个视图,一黑一绿。这是因为红色视图被黑色视图覆盖。
在FrameLayout中,通过android:layout_gravity属性指定子元素的位置。下面,调整上诉示例中黑色视图的位置,以便显示红色视图。调整后的代码如下:
视角
android:layout_width='200dp '
android:layout_height='200dp '
Android:layout _ gravity=' bottom | right '
android:background='#000000'/
可以看到上面的代码中添加了android:layout_gravity属性,并且指定了两个值,一个是bottom,一个是right,也就是说这个视图会放在FrameLayout的右下角。操作结果如下图所示:
第二,线性布局
LinearLayout是线性布局,允许其内部元素按指定方向排列。LinearLayout的方向由android:orientation属性指定,它的方向可以由android:gravity属性指定。
或者只看前面代码中的效果。代码如下:
线性布局
xmlns:Android=' http://schemas . Android . com/apk/RES/Android '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '
安卓:方向='垂直'
安卓:重力='中心'
视角
android:layout_width='100dp '
android:layout_height='100dp '
android:background='#ff0000'/
视角
android:layout_width='100dp '
android:layout_height='100dp '
android:background='#000000'/
视角
android:layout_width='100dp '
android:layout_height='100dp '
android:background='#00ff00'/
/线性布局
在代码中,LinearLayout的方向设置为垂直,其方式为居中对齐,所以运行结果如下图所示:
除了android:orientation被设置为垂直,它也可以被设置为水平。让LinearLayout里面的元素水平排列,将上面例子中的android:orientation属性的值改为horizontal,如下图所示:
三。相对布局
RelativeLayout是基本布局中最灵活、最复杂的布局。它的内部元素可以通过设置它们之间的相对关系来决定布局。使用RelativeLayout时,建议为每个内部元素设置一个id。这里,我们仍然会通过一个例子来演示这种布局的使用。代码如下:
相对布局
xmlns:Android=' http://schemas . Android . com/apk/RES/Android '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '
查看android:id='@ id/red '
android:layout_width='100dp '
android:layout_height='100dp '
android:background='#ff0000'/
查看android:id='@ id/black '
android:layout_width='100dp '
android:layout_height='100dp '
Android:layout _ toRightOf=' @ id/red '
android:layout_below='@id/red '
android:background='#000000'/
查看android:id='@ id/green '
android:layout_width='100dp '
android:layout_height='100dp '
Android:layout _ below=' @ id/black '
Android:layout _ alignParentRight=' true '
android:background='#00ff00'/
查看android:id='@ id/gray '
android:layout_width='100dp '
android:layout_height='100dp '
Android:layout _ centerInParent=' true '
android:background='#888888'/
查看android:id='@ id/orange '
android:layout_width='100dp '
android:layout_height='100dp '
Android:layout _ toRightOf=' @ id/green '
android:layout_below='@id/gray '
android:background='#ff8800'/
/RelativeLayout
先分析代码,可以看到每个视图都设置了一个id值,即红、黑、绿、灰、橙。然后通过代码可以看到,黑色位于右边,红色之下,绿色位于黑色之下,并与其父元素(即RelativeLayout)向右对齐,灰色与父元素(即RelativeLayout)向中心对齐,橙色位于绿色的右边,灰色之下,运行结果如图所示:
总结相对布局,这与布局相关的属性相关:
Android:layout_below:位于指定元素的下方。
Android:layout_above:位于指定元素的上方
Android:layout_toLeftOf:位于指定元素的左侧。
Android:layout_toRightOf:位于指定元素的右侧。
Android:layout_centerVertical:垂直居中对齐父元素。
Android:layout _ center horizontal:水平居中对齐父元素。
Android: layout _ centerparent:将父元素居中对齐。
Android:Layout _ AlignParentRight:向右对齐父元素。
Android:layout_alignParentLeft:向父元素的左侧对齐
Android:layout_alignParentTop:与父元素对齐。
Android:layout _ alignparentbottom:与父元素对齐。
Android:layout_alignRight:向指定元素的右边对齐。
Android:layout_alignLeft:向指定元素的左侧对齐。
Android:layout_alignTop:与指定元素对齐。
Android:layout_alignBottom:与指定元素对齐。
从Android 4.2开始,也就是从API级开始,Android增强了RelativeLayout,使其能够更好地应对和本地化这种需求。例如,在一些国家,文本是从右向左读的,这也被称为RTL。为了响应RTL,RelativeLayout添加了以下属性:
android:layout_alignStart:与指定元素的起始位置对齐。
android:layout_toStartOf:位于指定元素的开头。
android:layout_alignParentStart:与父元素和起始边对齐
android:layout_alignEnd:与指定元素的结束和开始位置对齐。
android:layout_toEndOf:位于指定元素的末端。
android:layout_alignParentEnd:与指定元素的结束位置对齐。
这里的开始和结束可以理解为:
开始:在有从左向右阅读习惯的国家,开始边等于左边,toStartOf的显示效果等于toLeftOf。而在习惯从右向左阅读的国家,起始边变成了右边,toStartOf的显示效果等于toRightOf。
End:和前面对开头的理解一样,在有从左向右阅读习惯的国家,end边是右边,反之亦然。
原文链接:http://lyjbk.com/archives/158.html
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。