1.线性布局(LinearLayout)的嵌套
2.使用layout_weight属性(合理分配父控件的空间)
1.线性布局(LinearLayout)的嵌套
LinearLayout是Android最简单的一种布局方式,使用简单,而且LinearLayout还可以进行嵌套使用,有什么用?
在一个Activity嵌套LinearLayout以后,一个Activity中既可以有水平线性布局又可以同时拥有垂直线性布局,大大的增加了我们对界面的可操作性:
- 下面这个Activity既不是咋一看是线性垂直布局,但是又有线性水平布局,那到底算什么布局呢?这就是线性嵌套布局(暂讨论线性布局,不讨论其他布局方式)。
提示:本程序相对复杂一点,故在附录直接给出Demo,已上的嵌套方法不是唯一的,只是举个例子,根据自己的逻辑推理可以有很多种嵌套方法;
- 简单的实例如下所示:
例子:
- 创建一个Android应用程序,命名为:S07_LinearLayout
- 把默认的标签改成LinearLayout(线性布局),且为水平布局,背景色为绿色,大小匹配父控件,一个线性布局有且只有一个根标签,子标签的数量不限制,在根标签里面再创建一个子标签:
- 把子标签设置成线性垂直布局,大小包含内容,背景色为红色,然后在这个子标签中添加一个TextView.
- 然后再增加一个TextView标签,然后看一下预览窗口,可以发现,里面的子标签果然是垂直布局的,而且在outline信息栏也有显示,当前XML文件控件的状态:
- 为了验证在最外一层(跟标签)LinearLayout是否是水平布局,把刚刚创建的子标签复制一份,放置于根标签的那一级目录,如下图所示:
- 在XML预览窗口可以发现,果然是呈水平摆放,,而且在右边的Outline的信息栏的图标也可以看出,总共有三个LinearLayout最外边的LinearLayout包含了两个LinearLayout,而且是可以展开的,跟文件夹很像,从图标的摆项也可以看出布局是水平还是垂直:
2.使用layout_weight属性的要点:
1.子控件并未占满父控件所有空间
2.layout_weight的值用于指定空闲空间的分配比例
- 此时当你指定这两个空间的layoutweight = 1,那么这控件将平分父控件所剩余的空间
- 变成如下这种情况:
用例子演示:
- 新建一个项目,命名为:S07_Layout_weight
- 修改布局文件为线性布局,宽度匹配父控件,高度包含内容,增加两个TextView控件,用不同的背景颜色区分:
- 如下图所示:绿色为控件一,蓝色为控件2,红色为剩余空间。
- 在TextView增加layout_weight属性,两个都为1,意思为分成两份,把剩余的控件平分给两个控件:
- 平分剩余空间后,如下图所示,再次提醒是平分剩余空间,而不是父控件的空间:
- 可以分成3份,把剩余空间分2/3给控件1,分1/3给控件2:
那么如果只是分配剩余空间那意义大吗?能指定分配整个父控件的空间吗?
答案肯定是能的。如果你想让控件一占整个父控件的2/3,让控件二占父控件的1/3,怎么做?
这里有一个技巧,就是设置这两个控件的layout_width为0dp,那是因为如果两个空间的控件占父控件的位置都是0dp,那父控件的位置全部就空出来了,这样一样,就可以去平分父控件的位置了.
附录:
本博文Demo下载:https://github.com/zGuangYuan/Android-
github的用法:点我查看