首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ConstraintLayout使用场景必知必会

这样的布局,在以往的布局方式下,都需要通过动态计算后修改高度来实现,但是通过ConstraintLayout,则可以直接在XML中实现。...百分比对齐 在ConstraintLayout中,虽然不能使用-margin的方式来完成传统布局中的一些错位的效果,但是可以借助Space来实现类似的功能,例如借助Space来实现左边TextView在右边...角度布局 通过角度的方式来对元素进行排列,在传统布局中,只能通过FrameLayout,并通过动态计算的方式,将角度换算为边距的方式来布局,但通过ConstraintLayout,则变的非常简单。...容器约束下的边界约束 考虑下面这个场景,中间的TextView被约束在两边的组件中,如下所示。 ? image-20201231145935870 TextView文字较少时,可以发现其尺寸是默认占据了整个约束空间,这时候,如果要求TextView只显示文字大小,类似设置wrap_content的效果,但是在文字长的时候,又必须被边缘约束,所以又不能设置

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android之ViewStub的简单使用

    1.viewstub就是动态加载试图;也就是在我们的app启动绘制页面的时候,他不会绘制到view树中;当在代码中执行inflate操作后,她才会被添加到试图中。...textView; private View inflate; private ConstraintLayout constraintLayout; @Override...= constraintLayout.findViewById(R.id.hello_tv); System.out.println("constraintLayout textView...可以看到当viewParent为空或者不是viewgroup时才会报这个错误;那么第一次调用的时候,肯定是进去了;发现一个方法replaceSelfWithView(view,parent);view就是我们在布局文件中给...我们用layout inspector来查看一下: inflate前:可以看到viewstub是灰色的 inflate后:可以看到viewstub直接被移除了,把引用布局直接放到view树里了。

    64430

    ConstraintLayout概要

    中,把控件放在布局中间的方法是把layout_centerInParent设为true,而在ConstraintLayout中的写法是: app:layout_constraintBottom_toBottomOf...可以留意到上面所用到的3个TextView宽度都为wrap_content,如果我们把宽度都设为0dp,这个时候可以在每个TextView中设置横向权重layout_constraintHorizontal_weight...将对控件进行 2 次测量,ConstraintLayout在1.1中可以通过设置 layout_optimizationLevel 进行优化,可设置的值有: none:无优化 standard:仅优化直接约束和屏障约束...在Placeholder中可使用setContent()设置另一个控件的id,使这个控件移动到占位符的位置。...,新建一个TextView约束在屏幕的右上角,在Placeholder中设置 app:content=”@+id/textview”,这时TextView会跑到屏幕的左上角。

    91132

    Android Jetpack | DataBinding

    DataBinding 是属于 Jetpack 的一个支持库,可以让你以在布局中声明属性的方式替代编码方式将布局中的 UI 组件和应用数据进行绑定 通常我们让控件和数据交互的方式如下面的代码,调用 findViewById...() 获取 TextView 控件并将 viewModel 中的 userName 属性赋值给它: findViewByIdTextView>(R.id.textView).apply { text...= viewModel.userName } 用 DataBinding 的方式就能消除上面所必须的代码,如下所示,效果和上面的代码完全相等,但是简洁多了,注意表达式被包含在 @{} 中 TextView... 标签就是我们放布局变量的地方,布局变量用于编写布局表达式,布局表达式被放置在元素的属性值中,格式是@{布局表达式} 3、实现你的第一个布局表达式 在 标签中添加一个 String...类型的布局变量 在 TextView 控件的属性中使用此变量,注意 id 和 variable

    1.1K10

    项目需求讨论 — ConstraintLayout 详细使用教程

    的左上角的坐标,这个TextView的确可以确定了位置,但是这二个属性只是单纯的进行演示,在真机操作的时候是无效的,就像"tools:text"一样,可以在写布局的时候方便查看TextView显示的文字...在 ConstraintLayout 1.0.x中,这个属性还可以把它设置为wrap。而到了1.1.x,它又有了一个新的值:percent,允许我们设置控件占据可用空间的百分比。...(注意:这在1.1-beta1和1.1-beta2中layout_constraintWidth_default是必须的,但是如果percent属性被定义,则在以下版本中不需要,然后将layout_constraintWidth_percent...---- Guideline ConstraintLayout的辅助对象的实用程序类。Guideline不会显示在设备上(它们被标记为View.GONE),仅用于布局。...他们只能在ConstraintLayout中工作。

    1.7K20

    Android入门教程 | 使用 ConstraintLayout 构建自适应界面

    因此,视图的垂直平面(左侧和右侧)只能约束在另一个垂直平面上;而基准线则只能约束到其他基准线上。 每个约束句柄只能用于一个约束条件,但您可以在同一定位点上创建多个约束条件(从不同的视图)。...使用 在 layout 中使用android.support.constraint.ConstraintLayout,如下示例 constraintlayout.widget.ConstraintLayout...> 引导线约束 Guideline 在 ConstraintLayout 中添加引导线,可以方便定位。...Match Constraints 视图会尽可能扩展,以满足每侧的约束条件(在考虑视图的外边距之后)。...layout 中设置 android:layout_width="0dp"和android:layout_height="0dp"。 确定好周围的参照线。

    2.6K10

    ConstraintLayout 入门指南

    准备工作 1.1 确保SDK Tools中已经下载了ConstraintLayout(以下简称CL)的支持库: 1.2 gradle中增加对ConstraintLayout的依赖: compile '...在CL中,子View / ViewGroup无法使用match_parent属性。...在xml的Design窗口下,组成chain的控件间会出现一条链条: 2.5.2 设置chain style 水平方向chain最左边的控件和垂直方向chain最顶部的控件被成为head chain。...设置为0dp(2.3中提到的MATCH_CONSTRAINT); 除此以外,Weighted Chain还有以下特征: Weighted Chain中的控件也允许在chain方向上使用wrap_content...的距离将计算入该控件实际占有的布局范围; e.g:将示例中的控件B左右各添加10dp margin后,控件A和C的实际占有布局并没有被压缩: 3.

    2.5K00

    【Jetpack】DataBinding 架构组件 ( 数据绑定技术简介 | Android 中的 DataBinding 数据绑定 | 启动数据绑定 | 定义数据类 | 布局文件转换 )

    , 会将数据自动更新到 数据模型 中 ; 数据模型 中的数据 改变时 , 会自动更新到 UI 组件 中 ; 使用 DataBinding 可以在 Android 的布局文件 中 , 承担部分 Activity...组件的工作 , 减少传统方式用法的 耦合度 ; 如 : 想要将 数据设置到 TextView 中 , 需要 先在 Activity 中 调用 Activity#findViewById 查找该组件 ,...build.gradle 构建脚本 - 启动数据绑定 在 Module 内的 build.gradle 构建脚本 中 , " android / defaultConfig " 配置块中 , 配置如下内容...; 在布局文件中 , 将鼠标放在左上角第一个字符位置 , 按下 " Alt + 回车 " 组合键 , 按下 " Alt + 回车 " 组合键 , 会弹出下面的菜单 , 有 " Convert...视图中查看 , 方便开发调试 , 不会显示在最终的应用中 ; 在布局文件中 , 使用 @{student.变量名} 获取该数据类型对象的成员 , 并设置到布局组件中 ; TextView

    1.6K20

    【Jetpack】DataBinding 架构组件 ③ ( 使用 include 导入二级界面布局 | 二级页面绑定数据模型 )

    布局中使用 import 标签导入 Java、Kotlin 类 ) 的示例中 , 有两个 TextView 组件 , 将其中显示年龄的 TextView 组件设置到单独的 XML 布局文件中 , 使用...> 在 activity_main 的 Design 模式下 , 拖动一个 include 容器到布局中 , include 在 Containers 类别下 ; 拖入后 , 选择之前创建的子布局 ;..." 然后 , 在 include 标签中 , 设置 app:student 属性标签 , 属性值为 variable 标签中的 name 对象名称 ; 属性名称 : 该属性的名称 , 也是不固定的 ,..." /> 最后 , 在 二级页面 布局中 , 使用数据模型 ; TextView android:id="@+id/textView"..." /> constraintlayout.widget.ConstraintLayout> 2、子布局 在子布局中 , 也需要转为 DataBinding

    60920

    让你的团队强制推行ConstraintLayout!

    为什么推荐使用ConstraintLayout ConstraintLayout(约束布局)在2016年的Google I/O大会上就推出来了,经历这两年的迭代,功能已经非常的成熟了。...一次偶然的机会,在项目中尝试了使用约束布局,从此被它的功能所深深折服。它能很轻易的将你从使用层层的嵌套去实现复杂的布局中解放出来。...因为ConstraintLayout的是在Support包中提供的,所以只需要在我们主Module的build.gradle中添加如下依赖: implementation 'com.android.support.constraint...注意一点,不要把一个控件申明在不同的Group中,这样有可能会导致设置可见性失效哦。 Guideline 利用这个控件,可以辅助我们布局UI。..." /> ConstraintLayout> 有什么优点 上面介绍了ConstraintLayout的部分功能,强烈推荐你去使用感受一下,在你使用过程中才能真正的体会到爽快

    93130

    【Jetpack】LiveData 架构组件 ( LiveData 简介 | LiveData 使用方法 | ViewModel + LiveData 示例 )

    , 运行过程中 , 在 UI 界面中 , 可以 修改 ViewModel 中的值 , 并 将新的值设置在 视图 View 中 ; 但是 , 如果 数据是在 ViewModel 中发生的改变 , 那么如何...postValue 和 setValue 两个函数 , 在 UI 主线程 中调用 setValue 函数 , 在 非 UI 线程的子线程 中调用 postValue 函数 更新数据 ; public...代码 先将 ViewModel 中的 LiveData 数据中的 进度值设置给 SeekBar , 目的是为了在屏幕旋转时 , 可随时恢复数据 ; 在 SeekBar 的拖动数据中 , 修改 ViewModel...> 第二个 Fragment 代码 在 Fragment2 中 , 只放了一个 TextView 组件 , 该组件显示的是 ViewModel 中的 LiveData 数据 , 当该 LiveData...> 4、运行效果展示 拖动 Fragment1 中的进度条 , 将进度条的进度 在 Fragment2 中的 TextView 中显示 , 并且横竖屏切换时 , 数据没有丢失 ; ---- 博客代码

    1.3K20

    Android经典实战之约束布局ConstraintLayout的实用技巧和经验

    它允许你在视图之间创建多种多样的约束条件,比如对齐、比例、偏移等。 基本用法 要使用 ConstraintLayout 需要在布局文件中声明它,通常使用 XML 文件来定义约束: 在这个例子中,TextView 的宽度设为 0dp,表示它会根据约束条件自动调整大小。...辅助工具 ConstraintLayout 提供了 ConstraintSet 和 ConstraintLayout Editor(在 Android Studio 中),可以更方便地创建和修改布局。...使用 chains:在需要多个视图沿某个方向排列时,可以使用链(horizontal chain,vertical chain),这比线性布局更高效。...减少嵌套布局:ConstraintLayout 可以大幅减少传统布局中的嵌套层级,从而提升性能。

    29910
    领券