Android 控件属性基础知识 | 青训营笔记

188 阅读5分钟

这是我参与「第四届青训营 」笔记创作活动的第3天
我发现自己对于 Android Studio 编程中一些基础控件的属性不清楚,比如说match-parent、wrap_content,所以在此做一个总结 🙂🙂🙂

1、宽、高

android:layout_width:指定子组件的布局宽度; android:layout_height:指定子组件的布局高度;

分别支持3种属性值:match_parent,fill_parent,wrap_content

  • match_parent 指定子组件的高度、宽度,与父容器组件的高度、宽度相同(不变量,固定)
  • fill_parent 作用与match_parent相同,已被match_parent取代
  • wrap_content 指定子组件的大小刚好能包裹它的内容,宽、高随内容改变(变量,可扩充)

2、四大布局

1、LinearLayout

线性布局:主要以水平或垂直方式来排列界面中的控件,并将控件排列到一条直线上。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能放一个控件。

image.png

orientation属性

android:orientation= " horizontal "     #线性水平
android:orientation= "vertical"         #线性垂直

gravity属性

控制组件中所包含的组件的对齐方式,可多个组合,如(left|bottom) android:gravity="left|bottom"

layout_gravity属性

控制该组件在父容器里的对齐方式

layout_weight属性

该属性需要加在LinearLayout的子控件中,其作用是分配线性布局中的剩余空间到该控件上。
比如说有两个空间button1、button2各占100空间,剩余200空间,未添加layout_weight属性时,控件未占满线性布局的区域会空出来(即200空间空出来)

  • 给控件button2加上android:layout_weight="1"后,会把线性布局剩余空间全部占满(即button1占100空间,button2占300空间)
  • 如果给button1和button2都加上android:layout_weight="1",则两个控件均匀分配剩余空间,button1、button2各占200空间。
  • 如果给button1加上android:layout_weight="3",button2加上android:layout_weight="1",button1和button2会按照3:1的比例来分配剩余空间,由于剩余的空间是200,则button1占250空间,button2占150空间。

2、RealtiveLayout

相对布局:根据父容器、兄弟组件进行定位。
   ~~~注意区分margin和padding:margin代表的是偏移,比如marginleft = "5dp"表示组件离容器左边缘偏移5dp; 而padding代表的则是填充,而填充的对象针对的是组件中的元素,比如TextView中的文字 比如为TextView设置paddingleft = "5dp",则是在组件里的元素的左边填充5dp的空间! margin针对的是容器中的组件,而padding针对的是组件中的元素。

1、设置控件间距的属性

属性值为具体的像素值

android:layout_marginTop       #设置当前控件上边界与某控件的距离
android:layout_marginBottom    #设置当前控件底边界与某控件的距离
android:layout_marginLeft      #设置当前控件左边界与某控件的距离
android:layout_marginRight     #设置当前控件右边界与某控件的距离

2、设置控件位置的属性

属性值为true或false

android:layout_centerInparent     #设置当前控件位置位于父布局的中央位置
android:layout_centerVertical     #设置当前控件位置位于父布局的垂直居中位置
android:layout_centerHrizontal    #设置当前控件位置位于父布局的水平居中位置
android:layout_alignParentTop     #设置当前控件是否与父控件顶端对齐
android:layout_alignParentLeft    #设置当前控件是否与父控件左对齐
android:layout_alignParentRight   #设置当前控件是否与父控件右对齐
android:layout_alignParentBottom  #设置当前控件是否与父控件底端对齐

属性值必须为id的引用名[@id/id-name]

android:layout_above              #设置当前控件位于某控件上方
android:layout_below              #设置当前控件位于某控件下方
android:layout_toLeftOf           #设置当前控件位于某控件左侧
android:layout_toRightOf          #设置当前控件位于某控件右侧
android:layout_alignTop           #设置当前控件的上边界与某控件的上边界对齐
android:layout_alignBottom        #设置当前控件的下边界与某控件的下边界对齐
android:layout_alignLeft          #设置当前控件的左边界与某控件的左边界对齐
android:layout_alignRight         #设置当前控件的右边界与某控件的右边界对齐

3、设置布局内边距的属性

android:paddingTop       #设置布局顶部内边距的距离
android:paddingBottom    #设置布局底部内边距的距离
android:paddingLeft      #设置布局左边内边距的距离
android:paddingRight     #设置布局右边内边距的距离
android:padding          #设置布局四周内边距的距离

注意:padding后面4个值定义的顺序分别为:上 右 下 左

3、FrameLayout

帧布局:直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,默认把它们放到这块区域的左上角。
帧布局的大小由控件中最大的子控件决定,后续添加的控件会覆盖前一个。

android:foreground          #设置帧布局容器的前景图像(始终在所有子控件之上) 
android:foregroundGravity   #设置前景图像显示位置

4、ConstraintLayout

约束布局:是一个ViewGroup为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。
该布局类似于 RelativeLayout(相对布局),但约束布局比相对布局更灵活,性能更出色,而且ContraintLayout可以按照比例约束控件位置和尺寸,能够更好地适配屏幕不同的机型。

layout_constraintLeft_toLeftOf                 #组件左部与某组件左部对齐
layout_constraintLeft_toRightOf                #组件左部与某组件右部对齐
layout_constraintRight_toLeftOf                #组件右部与某组件左部对齐
layout_constraintRight_toRightOf               #组件右部与某组件右部对齐
layout_constraintTop_toTopOf                   #组件顶部与某组件顶部对齐
layout_constraintTop_toBottomOf                #组件顶部与某组件底部对齐
layout_constraintBottom_toTopOf                #组件底部与某组件顶部对齐
layout_constraintBottom_toBottomOf             #组件底部与某组件底部对齐
layout_constraintBaseline_toBaselineOf         #组件基线与某组件基线对齐,文字底部对齐,与alignBaseLine属性相似
layout_constraintStart_toEndOf                 #组件首部与某组件尾部对齐
layout_constraintStart_toStartOf               #组件首部与某组件首部对齐
layout_constraintEnd_toStartOf                 #组件尾部与某组件头部对齐
layout_constraintEnd_toEndOf                   #组件尾部与某组件尾部对齐

5、总结

image.png Android 布局其实还有TableLayout(表格布局) 、AbsoluteLayout(绝对布局)、GridLayout(网格布局),这里不再叙述,请按需自行查找。

结语

总结不是很全面,仅针对自身查漏补缺
以上内容仅供参考,如有错误欢迎指正 🍺🍺🍺