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

细细品读!深入浅出,官方文档看ConstraintLayout

相对定位 相对定位是在ConstraintLayout中创建布局的最基本构建块,也就是一个控件相对于另一个控件进行定位,可以横向、纵向添加约束关系,用到的边分别有: 横向:Left、Right、Start...MARGIN 以图 3为例,这里的gone margin指的是B向A添加约束,如果A的可见性变为GONE,这时候B的外边距可以改变,也就是B的外边距根据A的可见性分为两种状态。...可见性的表现 ConstraintLayout对可见性被标记View.GONE的控件(称“GONE控件”)有特殊的处理。...,通过H,指定高度受约束,所以高度的尺寸会根据宽度大小按照比例得到,其效果如图所示: ?...在SPREAD CHAIN中,外边距会已经分配好的空间中去掉。

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

再学一次ConstraintLayout 一些新特性

引用另一个小部件ID layout_constraintCircleRadius :到其他小部件中心的距离 layout_constraintCircleAngle :小部件应该处于哪个角度(以度为单位,0...image.png 六、Visibility behavior 可见性行为 当一个View在ConstraintLayout中被设置为gone,那么你可以把它当做一个点(这个view所有的margin都将失效...image.png 右侧的图片可以看出,按钮2里面的内容确实是在按钮1的内容的右侧.但是按钮2整个来说,却是没有整个的在按钮1的右侧....layout_constraintHorizontal_chainStyle或layout_constraintVertical_chainStyle链的第一个元素时,链的行为将根据指定的样式(默认值CHAIN_SPREAD)更改...比如在上面的栗子中,Barrier 应该在 姓名TextView 的右侧,因此这里取值right(也end,可随意使用.这个right和end的问题,其实在RelativeLayout中就有体现,在RelativeLayout

1.6K40

【Android零单排系列三十三】《Android布局介绍——FrameLayout》

FrameLayout会将所有子视图堆叠在同一个位置上,添加的子视图会覆盖先前添加的子视图。...4.在代码中操作FrameLayout和子视图: 在代码中可以通过findViewById()方法获取FrameLayout和子视图的引用,并进行相应的操作,例如设置可见性更改位置、监听点击事件等 FrameLayout...imageView.setVisibility(View.VISIBLE); textView.setVisibility(View.GONE); // 更改子视图的LayoutParams FrameLayout.LayoutParams...removeView(View child):FrameLayout中移除指定的子视图。 removeAllViews():FrameLayout中移除所有子视图。...getChildAt(int index):获取指定位置的子视图。 getChildCount():获取子视图的数量。

32320

Android开发之漫漫长途 番外篇——自定义View的各种姿势2

该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易难的顺序进行编写该系列。...也源码角度彻底了解了为何会有如此表现。不仅要知其然,更要知其所以然。那么本篇呢,我们依然是来自定义View。与上一番外篇不同的是本章的重点放在ViewGroup上。...的宽度测量模式 int sizeHeight = MeasureSpec.getSize(heightMeasureSpec);//获取父View传给MyTagFlowLayout的高度...//循环得到每一个子View,这个的child指向的实际是我们上面添加TextView View child = getChildAt(i); //View 可见性如果是...View.GONE,则忽略它 if (child.getVisibility() == View.GONE) continue; //得到子View的测量宽度和高度

54630

setVisibility源码解析

后来经过定位,是在设置Visiblity的时候引起的,而且获取同一个控件宽高的时候发现位置和padding还有点关系,注释掉padding就没有这个问题。...//保存当前视图状态为old int old = mViewFlags; //更新视图状态为将要更改的属性。...mViewFlags = (mViewFlags & ~mask) | (flags & mask); //获取更改的属性位 int changed = mViewFlags...如果VISIBLE切换到GONE的时候是不会有什么问题的,但是GONE切换到VISIBLE的时候,会抢占焦点 3.问题解决 setPadding导致整个view重绘,使得原本处于屏幕中间的图不再处于正中间...而且往下挪的位置正好是padding的距离 4.总结 对于那些滑动性的控件(ListView,RecycleView,ScrollView)而言,当内部控件设置为GONE和VISIBLE的时候,一定要注意重绘的问题

1.1K40

Android 约束布局ConstraintLayout1.1.0 版详解

这两个属性的作用就是指定当前控件的宽度或高度是父控件的百分之多少。可设置的值在 0 - 1 之间,1 就是 100%。...设置头像的宽度占父控件宽度的 80%(父控件占满全屏)例子: <ImageView android:id="@+id/img_avatar" android:layout_width="...(无需加 @id/) barrierAllowsGoneWidgets:默认为 true,即当 Barrier 引用的控件被 <em>GONE</em> 掉时,则 Barrier 默认的创建行为是在已 <em>GONE</em> 掉控件的已解析位置上进行创建...Group Group 的作用就是控制一组控件的可<em>见性</em>。其可使用到的属性为: constraint_referenced_ids:指定所引用控件的 id。...当放置好 Placeholder <em>后</em>,可以通过 setContentId() 方法将占位符变为有效的视图。如果视图已经存在于屏幕上,那么视图将会<em>从</em>原有位置消失。

1.1K40

【约束布局】ConstraintLayout 组件可见性 View.GONE 处理 与 Margin 属性 ( 约束布局可见性处理 | goneMargin 属性 )

见性改变的行为处理 ( Visibility Behavior ) III ....可见性改变的行为处理 ( Visibility Behavior ) 约束布局 组件 可见性说明 : 1.讨论情况 : 约束布局中 , 当组件被设置成 View.GONE见性时 , 针对该组件的处理方式...; 2.通常处理方案 ( 其它布局 ) : 被设置成 View.GONE 属性的组件 , 一般情况下进行如下处理 : ① 取消显示 : 首先其先取消显示 ; ② 布局移除 : 然后将该组件布局中移除...属性布局截图 : 7.组件设置 GONE 属性的说明 : ① 可见性与宽高 : 目标组件仍然在布局中存在 , 只是变成了一个点 , 宽高变成 0 , 不可见 ; ② 约束存在 : 目标组件的约束仍然有效...0 ; ---- 被 约束到不可见组件 Margin 属性 表现 当 被约束组件的某位置 ( Left, Right, Top, Bottom ) 被 约束到的目标组件可见性 ( Visibility

1.2K30

私人订制Android本地图片选择器

效果图 需求分析 网格布局显示本地图片 支持图片多选 支持选中的图片预览 未选择图片时不可预览 由已选多图变为无图时退出图片选择页面 图片已选达到上限依然可以跳转图片选择页面 第三方框架使用 史上最强的安卓图片选择器...具体实现 导入GalleryFinal源码 GalleryFinal的Github仓库中拷贝仓库地址,使用git指令cloneGalleryFinal源代码到本地: git clone https...private FunctionConfig mFunctionConfig; // 核心配置 private CoreConfig mCoreConfig; // ------- 实现 ------- // 获取标题栏背景颜色...初步效果图 修改源码 通过运行调试,发现框架中有些功能与需求不一致,因此我产生了修改源码的想法,总结需要更改的原功能点如下: 选择完达到上限数量的图片,无法重新回到图片选择页面 ?...refreshSelectCount方法源码 源码中可以看到,预览按钮的可见性判断逻辑仅仅与isEnablePreview有关,而没有和选中的图片数量进行关联,所以我们修改代码如下: public

1.4K30

vue中使用viewerjs

←键: 查看上一张图片; →键: 查看下一张图片; ↑键: 放大图片; ↓键: 缩小图片; Ctrl + 0 组合键: 缩小到初始大小; Ctrl + 1 组合键: 放大到原始大小; 配置参数 如果要更改全局默认选项...在函数体内返回标题array 第一个参数表示可见性(0-4) 第二个参数就是标题 toolbar Boolean / Number / Object true 标题栏是否显示和布局 0 或者 false...URL如果是一个字符串,应该图像元素的属性之一如果是一个函数,应该返回一个有效的图像URL container Element / String body 将查看器置于modal模式的容器 只有在 inline...为 false的时候才可以使用 filter Function null 过滤图像以便查看(如果图像是可见的,应该返回true) toggleOnDblclick Boolean true 当你放大或者缩小图片时...向右旋转图片的按钮 flipHorizontal 图片左右翻转的按钮 flipVertical 图片上下翻转的按钮 {key:number|Boolean} 显示或者隐藏对应key的按钮 为Number的时候为可见性

3.4K20

android 之ViewStub

那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。...虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。也就是说,会耗费内存等资源。      ...但ViewStub也不是万能的,下面总结下ViewStub能做的事儿和什么时候该用ViewStub,什么时候该用可见性的控制。     ...按句话说,某个被ViewStub指定的布局被Inflate,就不会够再通过ViewStub来控制它了。          2....在程序的运行期间,某个布局在Inflate,就不会有变化,除非重新启动。

70990

Android实战技巧:ViewStub的应用

那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。...虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。也就是说,会耗费内存等资源。...但ViewStub也不是万能的,下面总结下ViewStub能做的事儿和什么时候该用ViewStub,什么时候该用可见性的控制。...按句话说,某个被ViewStub指定的布局被Inflate,就不会够再通过ViewStub来控制它了。 2....在程序的运行期间,某个布局在Inflate,就不会有变化,除非重新启动。

21820

ViewStub延迟加载

在项目中,难免会遇到这种需求,在程序运行时需要动态根据条件来决定显示哪个View或某个布局,最通常的想法就是把需要动态显示的View都先写在布局中,然后把它们的可见性设为View.GONE,最后在代码中通过控制...View.VISIABLE动态的更改它的可见性。...但是它的缺点就是,耗费资源,虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。...下面我们ViewStub源码来看下inflate()方法的实现原理: public View inflate() { final ViewParent viewParent = getParent...3.对ViewStub的inflate操作只能进行一次,因为inflate的时候是将它指向的布局实例化并替换掉当前ViewStub本身(由此体现出了ViewStub“占位”性质),一旦替换,此时原来的布局文件中就没有

1.6K10

android监听View加载完成的示例讲解

最近项目中需要实现一个GridView显示6*5=30项,并铺满整个界面,界面中还有自定义ActionBar等其他控件,所以需要获取剩下屏幕的高度。...GridView的高度,在这个回调之前获取的高度都是0 //处理完remove掉,至于为什么,后面有解释 gv_test.getViewTreeObserver() .removeOnGlobalLayoutListener...,调用一次 // tv_test.setVisibility(View.GONE); //改变文字布局,没有效果 // tv_test.setGravity(Gravity.CENTER);...经过测试,app退到后台后重新进入会调用一次,屏幕锁屏重新打开会调用两次(小米两次,努比亚1次),其中一次猜测是控件的可见性改变了。...通过按键的测试,分别修改控件的可见性和布局,都会调用一次,修改控件内部布局,不会调用,同时修改布局和可见性,只调用一次。

2.8K10

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

app:layout_constrainedWidth=”true” 会导致渲染变慢,变慢时长忽略不计。 b、例子 产品部的美女提出了这样的一个需求,看图: ?...A, B 两控件, B 在 A 的右侧,随着 A, B 宽度的增加, B 始终在 A 的右侧,当 A , B 控件的宽度之和大于父控件的宽度时, B 要求被完全显示,同时 A 被挤压。...4、goneMargin(隐藏边距) 当约束目标的可见性为 View.GONE时,还可以通过以下属性设置不同的边距值: layout_goneMarginStart layout_goneMarginEnd...姓名,联系方式位于 A 区域(随着文本的宽度变化 A 区域的宽度也随之变化),B 区域在 A 区域的右侧。使用传统的布局方式实现嵌套过多,布局不够优雅。...7、Group Group用于控制多个控件的可见性。 e.g: ? 若 android:visibility="gone" 那么 A,B 控件都会隐藏。

1.2K50
领券