Android开发学习笔记之详解五大布局

下面是一个简单的线性布局的例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 01 <?xml version="1.0" encoding="utf-8"?>

  2. 02 <LinearLayout

  3. 03 xmlns:android=“http://schemas.android.com/apk/res/android”

  4. 04 android:layout_width=“match_parent”

  5. 05 android:layout_height=“match_parent” android:orientation=“vertical”>

  6. 06 <EditText android:text=“EditText”

  7. 07

  8. 08 android:id=“@+id/editText1”

  9. 09

  10. 10 android:layout_height=“wrap_content”

  11. 11

  12. 12 android:layout_width=“fill_parent”>

  13. 13

  14. 14

  15. 15 <LinearLayout android:id=“@+id/linearLayout1”

  16. 16

  17. 17 android:layout_height=“fill_parent”

  18. 18

  19. 19 android:layout_width=“fill_parent”

  20. 20

  21. 21 android:gravity=“right”>

  22. 22 <Button android:id=“@+id/button2”

  23. 23

  24. 24 android:text=“Button”

  25. 25

  26. 26 android:layout_width=“wrap_content”

  27. 27

  28. 28 android:layout_height=“wrap_content”>

  29. 29 <Button android:text=“Button”

  30. 30

  31. 31 android:id=“@+id/button1”

  32. 32

  33. 33 android:layout_width=“wrap_content”

  34. 34

  35. 35 android:layout_height=“wrap_content”>

  36. 36

  37. 37

复制代码

最外层布局为垂直线性布局,宽度为整个屏幕(fill_parent),高度为刚好适合子控件(wrap_content)。然后依次添加一个EditText,一个水平布局的LinearLayout,在这个线性布局里面,摆放两个Button,该线性布局的gravity属性设置为”right”,所以里面的两个Button靠右显示。

二,TableLayout(表格布局)

把子元素放入到行与列中

不显示行、列或是单元格边界线

单元格不能横跨行,如HTML中一样

表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象。TableRow可以添加子控件,每添加一个为一列。

android:layout_colum官方解释:The index of the column in which this child should be,也即是设置该控件在TableRow中所处的列。

android:layout_span官方解释:Defines how many columns this child should span,也即是设置该控件所跨越的列数。

android:collapseColumns官方解释:The 0 based index of the columns to collapse. The column indices must be separated by a comma: 1, 2, 5.也即是将TableLayout里面指定的列隐藏,若有多列需要隐藏,请用逗号将需要隐藏的列序号隔开。

android:stretchColumns官方解释:The 0 based index of the columns to stretch. The column indices must be separated by a comma: 1, 2, 5. You can stretch all columns by using the value “*” instead. Note that a column can be marked stretchable and shrinkable at the same time.也即是设置指定的列为可伸展的列,可伸展的列会尽量伸展以填满所有可用的空间,若有多列需要设置为可伸展,请用逗号将需要伸展的列序号隔开。

android:shrinkColumns官方解释:The 0 based index of the columns to shrink. The column indices must be separated by a comma: 1, 2, 5. You can shrink all columns by using the value “*” instead. 设置指定的列为可收缩的列。当可收缩的列太宽以至于让其他列显示不全时,会纵向延伸空间。当需要设置多列为可收缩时,将列序号用逗号隔开。

下面用一个例子简单说明TableLayout的用法:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 01 <?xml version="1.0" encoding="utf-8"?>

  2. 02 <TableLayout xmlns:android=“http://schemas.android.com/apk/res/android”

  3. 03 android:layout_width=“fill_parent”

  4. 04 android:layout_height=“fill_parent”

  5. 05 android:stretchColumns=“1”>

  6. 06

  7. 07 <TextView

  8. 08 android:layout_column=“1”

  9. 09 android:padding=“3dip” android:text=“Row1”/>

  10. 10 <TextView

  11. 11 android:text=“1”

  12. 12 android:gravity=“right”

  13. 13 android:padding=“3dip” />

  14. 14

  15. 15 <View

  16. 16 android:layout_height=“2dip”

  17. 17 android:background=“#FF909090” />

  18. 18

  19. 19 <TextView

  20. 20 android:text=“*”

  21. 21 android:padding=“3dip” />

  22. 22 <TextView

  23. 23 android:text=“Row12”

  24. 24 android:padding=“3dip” />

  25. 25 <TextView

  26. 26 android:text=“2”

  27. 27 android:gravity=“right”

  28. 28 android:padding=“3dip” />

  29. 29

  30. 30 <View

  31. 31 android:layout_height=“2dip”

  32. 32 android:background=“#FF909090” />

  33. 33

  34. 34 <TextView

  35. 35 android:layout_column=“1”

  36. 36 android:text=“Row13”

  37. 37 android:padding=“3dip” />

  38. 38

  39. 39

复制代码

三、RelativeLayout(相对布局)

相对布局的子控件会根据它们所设置的参照控件和参数进行相对布局。参照控件可以是父控件,也可以是其它子控件,但是被参照的控件必须要在参照它的控件之前定义。下面是一个简单的例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 01 <?xml version="1.0" encoding="utf-8"?>

  2. 02 <?xml version="1.0" encoding="utf-8"?>

  3. 03 <RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”

  4. 04 android:layout_width=“fill_parent”

  5. 05 android:layout_height=“fill_parent”

  6. 06 >

  7. 07 <AnalogClock

  8. 08 android:id=“@+id/aclock”

  9. 09 android:layout_width=“wrap_content”

  10. 10 android:layout_height=“wrap_content”

  11. 11 android:layout_centerInParent=“true” />

  12. 12 <DigitalClock

  13. 13 android:id=“@+id/dclock”

  14. 14 android:layout_width=“wrap_content”

  15. 15 android:layout_height=“wrap_content”

  16. 16 android:layout_below=“@id/aclock”

  17. 17 android:layout_alignLeft=“@id/aclock”

  18. 18 android:layout_marginLeft=“40px” />

  19. 19 <TextView

  20. 20 android:layout_width=“wrap_content”

  21. 21 android:layout_height=“wrap_content”

  22. 22 android:text=“当前时间:”

  23. 23 android:layout_toLeftOf=“@id/dclock”

  24. 24 android:layout_alignTop=“@id/aclock”/>

  25. 25

复制代码

四、AbsoluteLayout(绝对布局)

绝对布局的子控件需要指定相对于此坐标布局的横纵坐标值,否则将会像框架布局那样被排在左上角。手机应用需要适应不同的屏幕大小,而这种布局模型不能自适应屏幕尺寸大小,所以应用的相对较少。下面以一个例子简单说明绝对布局:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 01 <?xml version="1.0" encoding="utf-8"?>

  2. 02 <AbsoluteLayout xmlns:android=“http://schemas.android.com/apk/res/android”

  3. 03 android:layout_width=“fill_parent”

  4. 04 android:layout_height=“fill_parent”

  5. 05 >

最后

感谢您的阅读,在文末给大家准备一个福利。本人从事Android开发已经有十余年,算是一名资深的移动开发架构师了吧。根据我的观察发现,对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

所以在此将我十年载,从萌新小白一步步成长为Android移动开发架构师的学习笔记,从Android四大组件到手写实现一个架构设计,我都有一一的对应笔记为你讲解。

当然我也为你们整理好了百度、阿里、腾讯、字节跳动等等互联网超级大厂的历年面试真题集锦。这也是我这些年来养成的习惯,一定要学会把好的东西,归纳整理,然后系统的消化吸收,这样才能极大的提高学习效率和成长进阶。碎片、零散化的东西,我觉得最没有价值的。就好比你给我一张扑克牌,我只会觉得它是一张废纸,但如果你给我一副扑克牌,它便有了它的价值。这和我们收集资料就要收集那些系统化的,是一个道理。

最后,赠与大家一句诗,共勉!

不驰于空想,不骛于虚声。不忘初心,方得始终。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

你们整理好了百度、阿里、腾讯、字节跳动等等互联网超级大厂的历年面试真题集锦。这也是我这些年来养成的习惯,一定要学会把好的东西,归纳整理,然后系统的消化吸收,这样才能极大的提高学习效率和成长进阶。碎片、零散化的东西,我觉得最没有价值的。就好比你给我一张扑克牌,我只会觉得它是一张废纸,但如果你给我一副扑克牌,它便有了它的价值。这和我们收集资料就要收集那些系统化的,是一个道理。

[外链图片转存中…(img-3EVoJCz3-1714413891643)]

最后,赠与大家一句诗,共勉!

不驰于空想,不骛于虚声。不忘初心,方得始终。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值