我想问一下什么时候需要measure(0,0)来获取宽高,什么时候直接调用getLayoutParams().height来获取宽高?

linguokun 2016-01-03 06:36:15
我感觉自己有个知识点有些搞不清楚
例如:什么时候需要
View view = View.inflate(hits,R.layout.layout_header,null);
view.measure(0,0);
int height = view.getMeasuredHeight();

什么时候直接通过
view.getLayoutParams().height或者view.getLayoutParams().width来获取宽高?

请各位大侠具体说明一下 我有点混淆分不清楚 最好说下应用场景
...全文
416 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
duqiang1441 2016-01-06
  • 打赏
  • 举报
回复
LayoutParams leftChildLayoutParams = mLeftChild.getLayoutParams();//获得子view向父容器申请的属性,就是前面带layout的属性 int leftChildHeightMeasureSpec = MeasureSpec .makeMeasureSpec(leftChildLayoutParams.height, MeasureSpec.EXACTLY); mLeftChild.measure(widthMeasureSpec, leftChildHeightMeasureSpec);//调用这里后才有tMeasuredHeight() getLayoutParams()是获取你在布局文件里面写的申请,getMeasuredHeight()是获得测量后的属性,如果测量的model不是MeasureSpec.EXACTLY,或者是值不等于getLayoutParams().height,这两个数值就不等. 坑应该填完了...
duqiang1441 2016-01-06
  • 打赏
  • 举报
回复
最后,建议使用view.getMeasuredHeight();因为申请不等于实际...
duqiang1441 2016-01-06
  • 打赏
  • 举报
回复
要是没记错的话. 这两个不完全相等,getview.getMeasuredHeight()获取到的是view的实际height,而view.getLayoutParams()拿到的是向父容器申请的 height,一般来说,如果Measured的model是那个什么鬼...忘了单词. 差不多就是这样.记性不好,懒得其看源码了..就这样吧
linguokun 2016-01-05
  • 打赏
  • 举报
回复
急求解答..........
linguokun 2016-01-05
  • 打赏
  • 举报
回复
引用 2 楼 u013676055 的回复:
view.measure(0,0); 应该是让View去计算。这个我没怎么。getLayoutParams那个在View绘制出来之后使用,不然获取不到。
我测试过getLayoutParams这个方法,view在被创建后就可以获取到宽高,不需要走完draw()这个流程
大崔527 2016-01-05
  • 打赏
  • 举报
回复
view.measure(0,0); 应该是让View去计算。这个我没怎么。getLayoutParams那个在View绘制出来之后使用,不然获取不到。

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧