这是我参与「第四届青训营 」笔记创作活动的第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
线性布局:主要以水平或垂直方式来排列界面中的控件,并将控件排列到一条直线上。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能放一个控件。
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、总结
Android 布局其实还有TableLayout(表格布局) 、AbsoluteLayout(绝对布局)、GridLayout(网格布局),这里不再叙述,请按需自行查找。
结语
总结不是很全面,仅针对自身查漏补缺
以上内容仅供参考,如有错误欢迎指正 🍺🍺🍺