首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

详解Android ConstraintLayout 约束布局的用法

前言 2016年的Google I/O大会上 , Google 发布了Android Studio 2.2预览版,同时也发布了Android 新的布局方案 ConstraintLayout , 但是最近的一年也没有大规模的使用...2017年Google发布了 Android Studio 2.3 正式版, Android Studio 2.3 版本中新建的Module默认的布局就是 ConstraintLayout 。..." </android.support.constraint.ConstraintLayout 使用 ConstraintLayout 的布局方案,需要在 build.gradle 引入支持库:...那么我们有个疑问,为什么Button 是居中显示的?因为在上面的布局中有两个重要的属性没有写出来,但是却有默认的属性值,那就是水平、垂直的偏移比例。...可以看到很明显,Button 水平方向向右偏移比例为 30% , 垂直方向向下偏移比例为 70% 。 基线约束控键 该控键帮助你对齐任意两个widget的文字部分,与widget的大小无关。

3.8K20

约束布局】ConstraintSet 约束集 ( 简介 | 约束属性集合 | 约束集初始化 | 约束集应用到布局 | 关键帧动画 | TransitionManager 使用 )

获取约束集 : 从 约束布局 ( ConstraintLayout ) , 可以获取 约束集 ( ConstraintSet ) , 约束集可以从当前现有组件获取 , 也可以从布局文件获取 ,...ConstraintSet 约束集 应用到 约束布局 ConstraintLayout ---- ConstraintSet 约束集 应用到 约束布局 ConstraintLayout : ①...传统属性 与 约束属性 : 这里将属性分为 传统属性 ( Custom Attributes ) , 约束属性 , 约束属性是只有 约束布局中使用的属性 , 其它的非约束属性就是传统属性 , 如 宽高...( 非传统属性 ) 应用到约束布局 ; V .... 约束布局 , 应用约束集属性 ( 设置 关键帧动画的 结束帧 ) constraintSet.applyTo(constraintLayout); } } 4 .

3.1K10

Android 约束布局ConstraintLayout1.1.0 版详解

那么强制约束(Enforcing constraints)的作用就是,控件被设置 WRAP_CONTENT 的情况下,使约束依然生效。...Dimensions 1.1 版本,当控件的尺寸设置为了 MATCH_CONSTRAINT 时( 0dp),设置尺寸上又多了二个新的修饰属性: layout_constrainWidth_percent...Margins and chains 1.1.0-beta4 版本(已知),为链的控件设置 marginRight/End 是无效的(个人感觉这应该是个 Bug)。...而在 1.1 稳定版,无论设置右边距还是左边距都是有效果的,会累计计算。并且计算剩余空间时,会将边距一起考虑。...设置值时,可以设置多个,如: app:layout_optimizationLevel="direct|barrier|dimensions" Barrier 当我们布局时,有时候就会遇到布局会随着数据的多少而改变大小的情况

1.1K40

Android开发笔记(一百四十九)约束布局ConstraintLayout

约束布局正是为了解决这些问题应运而生,它兼顾灵活性和高效率,可以看作是相对布局的升级版,很大程度上改善了Android的用户体验。...开发者使用约束布局之时,有多种手段往该布局内添加和拖动控件,既能像原型设计软件AxureRP那样画板上任意拖曳控件,也能像传统布局那样XML文件调整控件布局,还能在代码动态修改控件对象的位置状态...XML文件调整控件布局 传统布局如线性布局、相对布局基本是XML文件手工添加控件节点,约束布局当然也允许布局文件中指定控件的相对位置,这跟相对布局内部的控件位置调整类似,只不过用来表示位置的属性换了个名字罢了...代码添加控件 若要利用代码给约束布局动态添加控件,则可照常调用addView方法,不同之处在于,新控件的布局参数必须使用约束布局布局参数,即ConstraintLayout.LayoutParams...代码动态调整控件位置 有时根据用户界面上的操作,需要立即调整相关控件的显示位置,这要在代码修改控件的位置参数。

2K20

Android开发-Listview显示不同的视图布局

使用场景 重写ListView的BaseAdapter时,我们常常在getView()方法复用convertView,以提高性能。...convertViewItem为单一的同种类型布局时,能够回收并重用,但是多个Item布局类型不同时,convertView的回收和重用会出现问题。...比如有些行为纯文本,有些行则是图文混排,这里纯文本行为一类布局,图文混排的行为第二类布局。单一类型的ListView很简单,下面着重介绍一下ListView包含多种类型视图布局的情形。...(int) – 根据position返回相应的Item   3)根据view item的类型,getView创建正确的convertView 3.案例 import java.util.ArrayList...android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup

2.2K30

Android 屏幕适配】屏幕适配通用解决方案 ⑥ ( 约束布局 ConstraintLayout 百分比布局方案 | 将设计稿尺寸自动转为约束布局百分比标签属性 | 将输出结果设置到组件标签 )

文章目录 一、将设计稿尺寸自动转为约束布局百分比标签属性 二、将输出结果设置到组件标签 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 声明受限屏幕支持 约束布局 bias 计算公式参考...【约束布局】ConstraintLayout 偏移 ( Bias ) 计算方式详解 ( 缝隙比例 | 计算公式 | 图解 | 测量图 + 公式 ) 方案 ; 约束布局 百分比 屏幕适配案例参考 【约束布局...1280 像素 ; caculate_constraint 方法 , width 和 height 的高度就是设计稿的 宽度 720 和 高度 1280 ; // 相对于父类 比例计算 的原始数据...: 屏幕 宽高 , 其比例肯定是相对于父控件进行计算 float width = 1280, height = 720; width_inner 和 height_inner 是用于计算组件约束布局的位置的...:scaleType="fitXY" android:src="@mipmap/actual_" 约束布局组件样式 : 这里以 ImageView 为例 ; <?

1.5K10

android如何获取view布局的高度与宽度详解

前言 可能很多情况下,我们都会有activity获取view 的尺寸大小(宽度和高度)的需求。面对这种情况,很多同学立马反应:这么简单的问题,还用你说?你是不是傻。。...当我们 onCreate() 方法获取某个 View 组件的宽度和高度,直接调用 getWidth()、getHeight()、getMeasuredWidth()、getMeasuredHeight...OnGlobalLayoutListener 监听事件 布局发生改变或者某个视图的可视状态发生改变时调用该事件,会被多次调用,因此需要在获取到视图的宽度和高度后执行 remove 方法移除该监听事件...该实现方法需要继承 View,且多次被调用,建议使用。...像在自定义,加载一次布局,应该选中最后一个post的方法最为使用。 另外还用的多的,应该是第三种方式,一般在外部使用,比如需要等待Recyclerview绘制完成后进行的操作。

5.8K10

约束布局】ConstraintLayout 约束布局 ( 简介 | 引入依赖 | 基本操作 | 垂直定位约束 | 角度定位约束 | 基线约束 )

更加灵活 , 并且 ConstraintLayout 能在 Android Studio 布局编辑器中进行编辑 ; 5.可视化操作 : 布局编辑器 工具 , 可以设置所有的属性 , 该 布局编辑器...都是有多个约束 ; ( 2 ) 约束设置 与 显示位置 约束设置 与 显示位置 : 1.编辑器位置 : 向布局编辑器拖入 组件 , 如果不为其设置约束 , 他就会呆在鼠标松开的位置 ; 2....显示位置 : 如果 ConstraintLayout 组件没有约束 , 设备上运行时 , 该组件将在 ( 0 , 0 ) 坐标 ( 即 左上角 ) 处显示 ; 3.没有添加约束示例 ( 官网示例...) : 如下图 , 没有为 C 组件设置 垂直约束 , 布局编辑器 A 组件的下方显示 , 但是 设备上运行时 , C 组件 左右 与 A 组件对齐 , 但是其显示 屏幕的 最顶端 ,...因为 C 组件没有垂直方向的约束 ; 4.约束错误信息 : 尽管 组件 缺少一个约束 , 不会引起编译错误 , 但是 布局编辑器 会在工具栏 显示 “missing constraints

4.1K41

代码实验室--带你一步步理解使用 ConstraintLayout

约束系统概览 布局引擎使用每一个控件指定的约束确定他们布局的位置. 你可以手动指定约束, 也可以使用 Android Studio 布局编辑器推理自动指定....ImageView 被拖入布局后, UI 生成器就会立即询问其所使用的资源(显示 ImageView 的图)....此刻, 布局中有两个 View. 在下一节, 我们会学习如何创建 View 之间的约束. 创建手工约束 要创建一个约束, 你需要在指定手柄上点击并按住鼠标, 然后拖到另一个控件的约束手柄....为了实现, 我们可以如下所示创建一个 TextView 上锚点和 ImageView 底锚点之间的约束. 删除约束 使用这个 显示布局的删除约束按钮以删除选中控件上的 所有 约束....继续, 从布局删除 TextView 创建 ImageView 底锚点和容器底部的约束 UI 生成器应该看起来是这样 Inspector 显示出控件控件一个方形区域的中间.

2.6K60

笔记74 | 学习掌握ConstraintLayout的基本属性

This allows you to position a widget on a circle 我是这么理解的,您可以将一个控件的中心以一定的角度和距离约束另一个控件的中心,相当于一个圆上放置一个控件...A, B 两控件, B A 的右侧,随着 A, B 宽度的增加, B 始终 A 的右侧,当 A , B 控件的宽度之和大于父控件的宽度时, B 要求被完全显示,同时 A 被挤压。...Several additional modifiers are available 约束布局宽高的维度 match_parent 被 0dp 代替,默认生成的大小占所有的可用空间。...经常我们会遇到这样的需求,个人主页要求顶部的背景图宽高 16:9 来适配,如下图: ? 约束布局的实现方式如下: <!...约束布局,可以使用属性 constraint_referenced_ids属性来引用多个带约束的组件,从而将它们看作一个整体,Barrier 的介入可以完成很多其他布局不能完成的功能,如下: 开发中有这样的一个需求

1.2K50

ConstraintLayout2.0一篇写不完之约束到底写在哪

MotionLayout约束可以写在三个地方。 直接写在MotionLayout:如果布局简单,那么可以直接写在MotionLayout,这样Scene约束会直接继承Layout。...❝默认情况下,所有的约束都来自于Layout,这也是IDE,默认显示的Source是Layout的原因。...❞ 这几种写法各有利弊,首先,写在MotionLayout,会被State布局约束覆盖,但是写在Scene,每个State都要重复写大量的约束,写在单独的CL布局,则无法预览,所以,成年人的世界...Derived Constraints ConstraintSet可以从另一个ConstraintSet中派生,这样可以优化约束的复用,利用deriveConstraintsFrom属性,你可以指定另一个...使用这些标签的好处是,如果不存在这些属性,则从基本布局文件获取。如果只需要一个Motion标签,这就可以省去复制所有的布局标签。如果使用了这些标签,那么基础文件的所有布局属性都会被覆盖。

76820

Android新特性介绍,ConstraintLayout完全解析

其实ConstraintLayout是Android Studio 2.2主要的新增功能之一,也是Google去年的I/O大会上重点宣传的一个功能。...类似地,如果我们想要让Button居中显示,那么就需要给它的上下左右都添加约束,如下图所示。 ? 这就是添加约束最基本的用法了。 除此之外,我们还可以使用约束让一个控件相对于另一个控件进行定位。...首先需要说明,ConstraintLayout是有match parent的,只不过用的比较少,因为ConstraintLayout的一大特点就是为了解决布局嵌套,既然没有了布局嵌套,那么match...接下来我们开始实现让两个按钮水平方向上居中显示,并距离底部64dp的功能,如下图所示。 ?...然后给注册按钮的左边向Guideline添加约束,注册按钮的下面向登录按钮的下面添加约束。这样就实现了让两个按钮水平方向上居中显示垂直方向上都距离底部64dp的功能了。

1.8K70

ConstraintLayout2.0进阶之路-欢迎新同学

ConstraintLayout2.0针对布局来说,主要新增了两类东西,一个是新增了VirtualLayouts,用于将一组View进行关联管理,并赋予定义的能力,另一个是放开了ConstraintHelper...Constraint Layout,VirtualLayouts作为virtual view group的角色参与约束布局,但是它们并不会作为视图添加到视图层级结构,而是仅仅引用其它视图来辅助它们布局系统完成各自的布局功能...,这个场景ConstraintLayout1,只能通过新增一个View并建立与要设置背景色的一组View的约束的方式来实现,而现在,使用Layer就很方便了。...xml布局,只需要指定ConstraintHelper和referenced_ids即可。...ConstraintProperties ConstraintProperties是一个用于代码创建约束的工具类。2.0版本之前,我们需要这样修改属性,代码如下所示。

77511

ConstraintLayout2.0一篇写不完之嵌套滚动怎么滚

ConstraintLayout1.x阶段,它主要提供的能力是对静态布局的支撑,那么到2.x之后,MotionLayout的拓展,让它对动态布局的支持有了进一步的优化,1.x阶段不能实现的嵌套滚动布局布局方式...ConstraintLayout2.x,有两种方式来实现嵌套滚动布局。...image-20210223105619990 AppBarLayout,我们通过MotionLayout控制动画效果。...,可以使用ConstraintOverride来直接覆写,这样可以少写很多重复的约束,这里的约束改变实际上只有两个,即layout_height从200变为56,而另一个重要的点,就是motionProgress...,设计思路不可谓精,一旦你熟练掌握了MotionLayout的各种基础布局,那么即使再复杂的布局,也能分而治之。

1.1K30

Android Notes|实用小技巧,不定期更新...

clone(csRoot) // 克隆父布局约束 clear(R.id.vip_view_fl, END) // 移除指定约束 connect(R.id.vip_view_fl, TOP...:首先通过 clone 进行父布局克隆;随后可以通过 clear 清除 view 指定约束,前者为 view id,后者为约束位置,上右下左;最后可以通过 connect 设置对应的约束即可,参数依次为...:当前 view id,对其约束位置,目标 view id,对其约束位置,margin动态设置比例xml 布局通过如下设置比例:app:layout_constraintDimensionRatio=..."900:1170"代码则可以通过如下方式:ConstraintSet().apply { clone(prettyParentCl) <--- 根布局 id setDimensionRatio...文字超链接点击后,背景色如何消除highlightColor = R.color.trans.ColorInt跑马灯效果xml 布局设置如下:(注意宽度要限制)android:ellipsize="marquee

6610
领券