本文主要详细介绍Android ConstraintLayout约束布局的使用方法。边肖认为这很好。现在分享给大家,给大家一个参考。来和边肖一起看看吧。
前言
在2016年的Google I/O大会上,Google发布了Android Studio 2.2的预览版,也发布了Android的新布局方案ConstraintLayout,但最近一年并没有大规模使用。2017年,谷歌发布了Android Studio 2.3正式版,Android Studio 2.3中新模块的默认布局是ConstraintLayout。如下所示:
?xml版本='1.0 '编码='utf-8 '?
Android . support . constraint . constraint layout
xmlns:Android=' http://schemas . Android . com/apk/RES/Android '
xmlns:app=' http://schemas . Android . com/apk/RES-auto '
xmlns:tools=' http://schemas . Android . com/tools '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '
工具:context=' com . constraint layout . app . main 2 activity '
/Android . support . constraint . constraint layout
要使用ConstraintLayout的布局方案,需要在build.gradle中引入支持库:
依赖关系{
编译“com . Android . support . constraint:constraint-layout:1 . 0 . 1”
}
在传统的Android开发中,接口基本上是通过编写XML代码来完成的。Android Studio虽然也支持可视化方式写界面,但是操作起来不方便,我也从来不推荐可视化方式写Android应用的界面。
而ConstraintLayout就是为了解决这种情况。与传统的接口编写方式相反,ConstraintLayout非常适合用可视化的方式编写接口,但不适合用XML编写接口。当然,可视化操作的背后还是使用了XML代码,只是这些代码是Android Studio根据我们的操作自动生成的。
此外,ConstraintLayout还有一个优点,可以有效解决嵌套布局过多的问题。我们平时写界面的时候,复杂的布局总是伴随着多层嵌套,嵌套越多,程序的性能越差。ConstraintLayout使用约束来指定每个控件的位置和关系。它有点类似于RelativeLayout,但远比RelativeLayout强大。
ConstraintLayout向后兼容API 9
关于ConstraintLayout的基本用法,请参考郭申的博客:https://www.jb51.net/article/126440.htm。
本文将讨论其他一些特性。
常用方法总结
Layout_constraintTop_toTopOf //将所需视图的顶部与另一个视图的顶部对齐。
layout _ constraint top _ tobottom of//将所需视图的顶部与另一个视图的底部对齐。
layout _ constraint bottom _ totopof//将所需视图的底部与另一个视图的顶部对齐。
layout _ constraint bottom _ tobottom of//将所需视图的底部与另一个视图的底部对齐。
layout _ constraint left _ totopof//将所需视图的左侧与另一个视图的顶部对齐。
layout _ constraint left _ tobottom of//将所需视图的左侧与另一个视图的底部对齐。
layout _ constraint left _ toleftof//将所需视图的左侧与另一个视图的左侧对齐。
layout _ constraint left _ to right of//将所需视图的左侧与另一个视图的右侧对齐。
layout _ constraint right _ totopof//将所需视图的右侧与另一个视图的顶部对齐。
layout _ constraint right _ to bottom of//将所需视图的右侧与另一个视图的底部对齐。
layout _ constraint right _ toleftof//将所需视图的右侧与另一个视图的左侧对齐。
layout _ constraint right _ to right of//将所需视图的右侧与另一个视图的右侧对齐。
constraintDimensionRatio
该属性是将视图的大小设置为特定的长宽比,比如将图片的长宽比设置为1: 1、4: 3、16: 9等。使用ConstraintLayout,您可以简单地使用layout _ constraintdimensionratio属性。
?xml版本='1.0 '编码='utf-8 '?
安卓。支持。约束。约束布局xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
xmlns:app=' http://模式。安卓。' com/apk/RES-auto '
xmlns:tools=' http://模式。安卓。' com/tools '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '
Android:id=' @ id/constraint layout '
工具:context=' com。约束布局。app。'主要活动'
图像视图
android:id='@ id/cat_image '
android:layout_width='0dp '
Android:layout _ height=' wrap _ content '
app:layout _ constraint left _ toLeftOf=' parent '
app:layout _ constraint top _ toTopOf=' parent '
app:layout _ constraintDimensionRatio=' 4:3 '
app:layout _ constraint right _ to right of=' parent '
app:layout _ constraint horizontal _ bias=' 0 '
android:src='@mipmap/cat '
/
图像视图
android:layout_width='0dp '
Android:layout _ height=' wrap _ content '
Android:src=' @ MIP map/IC _ launcher '
app:layout _ constraintDimensionRatio=' 4:3 '
app:layout _ constraint bottom _ to bottom of=' parent '
app:layout _ constraint left _ toLeftOf=' parent '
app:layout _ constraint top _ toBottomOf=' @ id/cat _ image '
app:layout _ constraint vertical _ bias=' 0.0 '
app:layout _ constraint right _ to right of=' parent '/
/安卓。支持。约束。约束布局
效果图如下:
偏移比例
当我们的布局文件是下面这样的时候:
?可扩展标记语言版本='1.0 '编码='utf-8 '?
安卓。支持。约束。约束布局xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
xmlns:app=' http://模式。安卓。' com/apk/RES-auto '
xmlns:tools=' http://模式。安卓。' com/tools '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '
Android:id=' @ id/constraint layout '
工具:context=' com。约束布局。app。'主要活动'
纽扣
android:id='@ id/button3 '
Android:layout _ width=' wrap _ content '
Android:layout _ height=' wrap _ content '
android:text='Button '
app:layout _ constraint bottom _ to bottom of=' parent '
app:layout _ constraint right _ to right of=' parent '
app:layout _ constraint left _ toLeftOf=' parent '
app:layout _ constraint top _ toTopOf=' parent '
/
/安卓。支持。约束。约束布局
我们得到的布局效果如下:
那么我们有个疑问,为什么纽扣是居中显示的?因为在上面的布局中有两个重要的属性没有写出来,但是却有默认的属性值,那就是水平、垂直的偏移比例。
layout _ constraint horizontal _ bias//控件的水平偏移比例
layout _ constraint vertical _ bias//控件的垂直偏移比例
如果在布局文件中没有明确的写出偏移比例,那么系统默认偏移比例值为:0.5 。
到这里我们已经清楚了,上面的布局文件就相当于:
?可扩展标记语言版本='1.0 '编码='utf-8 '?
安卓。支持。约束。约束布局xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
xmlns:app=' http://模式。安卓。' com/apk/RES-auto '
xmlns:tools=' http://模式。安卓。' com/tools '
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '
Android:id=' @ id/constraint layout '
工具:context=' com。约束布局。app。'主要活动'
纽扣
android:id='@ id/button3 '
Android:layout _ width=' wrap _ content '
Android:layout _ height=' wrap _ content '
android:text='Button '
app:layout _ constraint bottom _ to bottom of=' parent '
app:layout _ constraint right _ to right of=' parent '
app:layout _ constraint left _ toLeftOf=' parent '
app:layout _ constraint top _ toTopOf=' parent '
app:layout _ constraint horizontal _ bias=' 0.5 '
app:layout _ constraint vertical _ bias=' 0.5 '
/
/安卓。支持。约束。约束布局
我们可以试试,更改纽扣的偏移值试试看,比如,水平偏移0.3 , 垂直偏移0.7 , 看看效果:
可以看到很明显,按钮在水平方向向右偏移比例为30% , 在垂直方向向下偏移比例为70% 。
基线约束控键
该控键帮助你对齐任意两个小部件的文字部分,与小部件的大小无关。例如你有两个不同尺寸的小部件但是你想要他们的文字部分对齐。
布局_约束基线_toBaselineOf
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。