[学习]android 中的 ConstraintLayout 布局(一)

今天学习这个布局的时候,发现跟前面的并不相同。首先没有了 XML attributes ;同时我打开看了看 LinearLayout.LayoutParams 里面也没有对应的 XML attributes 。平时使用这个布局的时候我一般都是用界面的方式进行拖拽,在图形界面下添加约束。很多代码我都不知道是什么含义,只不过由于英语的含义很明确,在看代码的时候也能猜的出来,但是自己写记不住。只不过我在文档里面看到了 Developer Guide ,这里面有对这个布局进行了说明。对应的官网在这里 ConstraintLayout

官方 ConstraintLayout 布局说明

这里用到了一个插件进行的截图,插件名称就叫 捕捉网页截图 - FireShot的 。

可能你跟我一样根本就看不懂英文,没关系的,我这里还提供了视频,只不过也是别人的视频,我再次感谢这位作者。布局 ConstraintLayout 。

以前我刚写这个的时候遇到过一个问题,也就是通过 javakotlin 代码控制布局,当时我是在百度上搜索,然后直接使用别人的代码实现的,今天我尝试在官网上找到答案。首先描述一下需求,跟弹框差不多,就是那种从下到上的弹框。我使用约束布局来做,刚开始的时候让其上边指向底部,等弹出来的时候让下指向底部。
刚开始的设计图样子,也就是隐藏的状态:

隐藏的状态

此时我想通过点击 吴敬悦 这几个字的方法使其上升。要想控制约束,需要看 ConstraintSet ,通过这个对象进行操作的:

val c = ConstraintSet() // 获取对象
// 一般在操作约束的时候,都会保留这个 view 其他的约束,只修改我们要修改的,如果的确存在修改全部可以直接使用
c.connect(startID, startSide, endID, endSide) // 其中 startID 是要操作的 view id , startSide 是要操作 view 的那个方向的约束,可以传入 ConstraintSet.TOP 等值; 第三第四的值则是要约束到谁身上
// 有时候我们想删除某一个 view 的某一方向的约束
c.clear(viewId, anchor) // viewId 是要删除的 view , anchor 是要删除的哪一个方向的约束
// 如果要删除全部约束,那么不传入第二个参数
c.clear(viewId)

写到这里我思考,下次来新的,我怎么知道怎样操作;我看官网,仔细看了看:


旁边的菜单有这个包相关的类

这个包下面的都是相关的操作,具体怎么使用,看这个就差不多了;于是我又去看了看前面两个布局,我发现并没有这些,只是一个单一的类,而不是以包的形式展示。

看来整个官网还有很多东西需要学习,比如整个内容的怎么分配的,怎样才能更快的找到自己想要的答案。

你可能感兴趣的:([学习]android 中的 ConstraintLayout 布局(一))