这位小同伴的昵称是:

陈小缘

若是人人平时打开民众号对照多,那么一定知道这个系列:

这交互炸了系列 第十三式之移花接木

这交互炸了系列 第十二式之年年有鱼

....

看名字就知道至少有十三篇啦,可以自行去作者博客学习。

每一篇质量都异常高。

不外谢谢主要的缘故原由不是这个。

追溯问答

还记得在 5 月尾的时刻,玩 Android 上线了问答:

千呼万唤始出来 玩Android 上线了问答

我也许公布了 10 多个问题


实在公布问题是一个很无聊的事情,有时刻公布几天了,还没人回覆,逐步就会形成一股异常消极的情绪,对该功效甚至自我的否认:

这功效有个鸡儿用,哪能形成沉淀呢...

印象最深的一次,我公布了一个 Binder 的问题,挂了好几天没人回覆,我就最先自卑过甚了(仔细看上图 ,binder 接下一个问题,周期靠近半个月),还好他,没错,就是这个男子,群里 at 了我一下,问我问答呢?

把我从放弃边缘拉回来了。

以是在这夜深人静的时刻,我数了一下所有的问题,陈小缘啦啦啦同砚险些回覆了我所有的问题。

我数了一下,只有一个问题,gradle plugin 相关的没有回覆,其他都做领会答。

说实话,没有小缘的回覆,这个功效我就准备石沉大海了。

在此示意由衷的谢谢。

问答的初衷

实在我最初做问答这个功效,主要是针对学习性子的问题,什么意思呢?

就是问答的寄义实际上是给人人查缺补漏,或者是以前没有领会过的内容,恰好学习一下,最后回来回覆总结一下。

往大一点说,整个网站都是偏学习性子的,就是它只能作为你想要学习的时刻,来看看文章。

今天的干货

听我扯了这么多,要是不加点干货,感受虚耗一次推送,好亏。

那么今天就主要贴个问答吧。

详细的形貌下自界说 View 丈量时 MesureSpec.UNSPECIFIED

信赖人人多数都能说出自界说的步骤,然则许多细节上的问题实在也需要关注。

针对MesureSpec.UNSPECIFIED

  1. 这个模式什么时刻会遇到?

  2. 遇到后怎么处置?

  3. 有什么注意事项?

这个问题,我基本上面试都市问,能够回覆上来的同砚实在很少。

UNSPECIFIED,就是未指定的意思,在这个模式下父控件不会过问子View想要多大的尺寸。

,

环球UG_ALLbet6.com

欢迎进入环球UG官网(UG环球):www.ugbet.us,环球UG官方网站:www.ugbet.net开放环球UG网址访问、环球UG会员注册、环球UG代理申请、环球UG电脑客户端、环球UG手机版下载等业务。

,

那么,这个模式什么时刻会在onMeasure里遇到呢:

实在是取决于它的父容器。

就拿最常用的RecyclerView做例子,在item举行measure时,若是列表可转动,而且item的宽或高设置了WRAP_CONTENT的话,那么接下来,itemView的onMeasure方式就会收到MesureSpec.UNSPECIFIED

打开RecyclerView源码,会在getChildMeasureSpec方式里看到这么一句注释:

“MATCH_PARENT can't be applied since we can scroll in this dimension, wrap instead using UNSPECIFIED.”

它想表达的是:在可转动的ViewGroup中,不应该限制Item的尺寸(若是是水平转动,就不限制宽度),为什么呢?

由于是可以转动的,就算Item有多宽,有多高,通过转动也一样能看到转动前被遮挡的部门。

有同砚可能会有疑问:

我设置了wrap_content,在onMeasure中应该收到的是AT_MOST才对啊,为什么要强制酿成UNSPECIFIED?

这是由于考虑到Item的尺寸有可能超出这个可转动的ViewGroup的尺寸,而在AT_MOST模式下,你的尺寸不能超出你所在的ViewGroup的尺寸,最多只能即是。以是用UNSPECIFIED会更合适,这个模式下你想要多大就多大。

那么,我们在自界说View的时刻,在丈量时发现是UNSPECIFIED模式时,应该怎么做呢

这个就对照自由了,既然尺寸由自己决议,那么我可以写死为50,也可以固定为200。

但照样建议结合实际需求来界说咯。

好比ImageView,它的做法就是:有设置图片内容(drawable)的话,会直接使用这个drawable的尺寸,但不会跨越指定的MaxWidth或MaxHeight, 没有内容的话就是0。

而TextView处置UNSPECIFIED的方式,和AT_MOST是一样的。

固然了,这些尺寸都不一定即是最后layout出来的尺寸,由于最后决议子View位置和巨细的,是在onLayout方式中,在这里你完全可以无视这些尺寸,去layout成自己想要的样子。

不外,一样平常不会这么做。

来自:小缘的回覆。

意外的发现

有一位民众号主 nanchen,受到我之前做的:

我在一个群分享Android 似乎被我分享得没人语言了... 3期

算是启发吧。逐日一问这个事情,说实话看起来异常容易,坚持下来难到不行。

也在陆续更新一些逐日一问的内容,不知道能坚持多久,但照样为他点赞,文章也许如下:

逐日一问:讲讲 Java 虚拟机的类加载机制

最后

还记得第一次和小缘谈天的时刻,他还在纠结怎么追女神,最近发现他已经在给女朋友买书了!

应该是好人有好报吧。

嘿嘿嘿~

谁人,小缘不要有压力,万万不要由于这篇文章,心态不要发生任何转变,把回覆作为义务,实在照样就想回覆就回覆,该做菜做菜,轻松过好自己的每一天!

推荐阅读:

教你写一个弹幕库,确定不领会一下?

Android 优质手艺分享 | 6 期

19年3月移动端大厂面试题分享