Android学习笔记 – 常用的布局
简介
Android中有六种的布局方式,分别是:LinearLayout(线性布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局)、AbsoluteLayout(绝对布局)、GridLayout(网格布局)。在开发中,我们用的最多的就是线性布局和相对布局。
LinearLayout(线性布局)
线性布局是我们在开发中用的最多的一种布局方式。我们在进行屏幕适配时用的比较多的就是LinearLayout的weight(权重属性)。
-
核心属性图
-
weight(权重)属性详解
-
用法
实现代码:
用法归纳:
按比例划分水平方向,将涉及到的view的android:width的属性设置为0dp,然后设置android:weight属性设置比例即可。竖直方向需将android:height属性设置为0dp即可,然后设置android:weight即可。
Java代码中设置weight属性:
setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1))
但是使用LinearLayout布局仍然存在一些问题。当界面比较复杂的时候,使用多层LinearLayout进行嵌套就会降低渲染速度,而且如果是listView或GridView上的item时,效率会更低。另外太多层的LinearLayout嵌套会占用更多的系统资源,还有可能引发stackoverflow,这个时候就需要RelativeLayout(相对布局)。
RelativeLayout(相对布局)
-
核心属性图
-
父布局定位示意图
父容器定位示意图
-
兄弟布局组件定位
兄弟组件定位
关于兄弟组件定位最经典的例子就是”梅花布局”。
梅花布局
实现代码:
-
margin与padding的区别
margin代表的是偏移,比如marginleft=”5dp”表示组件离容器左边缘偏移5dp;而padding代表的则是填充,比如TextView中的文字,将textView的paddingleft=”5dp”,则是在组件里的元素的左边填充5dp的空间。 margin针对的是容器中的组件,而padding针对的是组件中的元素。
比较实例代码如下:
运行效果图:
TableLayout(表格布局)
-
介绍
在HTML中,我们可以通过
等属性就可以生成一个HTML的表格, 而Android中也允许我们使用表格的方式来排列组件,就是行与列的方式,就说我们这节的TableLayout! 但却不像我们后面会讲到的Android 4.0后引入的GridLayout(网格)布局一样,直接就可以设置多少行与多少列。
以上三个属性的列号都是从0开始算的,比如collapseColumns = “1”,对应的就是第2列。可以设置多个,使用”,”隔开,比如”0,2″,如果是所有列都生效,则用”*”号即可。除了这三个常用属性,还有两个属性,分别就是跳格子以及合并单元格:
属性使用实例: ①、collapseColumns(隐藏列) 在TableRow中定义5个按钮后,接着在最外层的TableLayout中添加以下属性: android:collapseColumns = “0,2”(隐藏第一与第三列)。
效果图: ②、stretchColumns(拉伸列) 在TableLayout中设置了四个按钮,接着在最外层的TableLayout中添加以下属性: android:stretchColumns = “1”(设置第二列为可拉伸列,让该列填满这一行所有的剩余空间)
效果图: ③、shrinkColumns(收缩列) 设置了5个按钮和一个文本框,在最外层的TableLayout中添加以下属性: android:shrinkColumns = “1”(设置第二个列为可收缩列)
效果图: FrameLayout(帧布局)
FrameLayout(帧布局)是六个布局中最简单的布局,这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角,而这种布局方式却没有任何的定位方式,所以它应用的场景并不多;帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看到最上面的那个组件!后续添加的控件会覆盖前一个!虽然默认会将控件放置在左上角,但是我们也可以通过layout_gravity属性,指定到其他的位置!
前景图片:永远处于帧布局最上面,直接面对用户的图像,就是不会被覆盖的图片。
效果图 GridLayout(网格布局)
效果图: 实现代码:
代码解析:只是”回退”与”清除”按钮横跨两列,而其他的都是直接添加的,默认每个组件都是 占一行一列,另外还有一点要注意的: 我们通过:android:layout_rowSpan与android:layout_columnSpan设置了组件横跨 多行或者多列的话,如果你要让组件填满横越过的行或列的话,需要添加下面这个属性: android:layout_gravity = “fill”。
AbsoluteLayout(绝对布局)
AbsoluteLayout是直接通过X,Y坐标来 控制组件在Activity中的位置的!另外这个但单位是dp!
①控制大小: android:layout_width:组件宽度 android:layout_height:组件高度 ②控制位置: android:layout_x:设置组件的X坐标 android:layout_y:设置组件的Y坐标 本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/745465e308.html |
