自定义viewGroup中测量子view的问题

x443137254 2018-04-22 11:38:25
第一次写viewgroup就出问题,子view一个不显示,感觉问题出在这里:
    @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
for (int i = 0; i < getChildCount(); i++) {
measureChild(getChildAt(i), widthMeasureSpec, heightMeasureSpec);
}
// measureChildren(widthMeasureSpec, heightMeasureSpec);
int size = (getChildAt(0).getWidth() + mRadius) * 2;
if (widthMode == MeasureSpec.EXACTLY){
size = widthSize;
}
setMeasuredDimension(size, size);
}


这是重写viewGroup的测量方法,感觉规规矩矩的,但测量子view的时候,结果子view宽高全是0,跟进去发现没跑measureChild()这个方法,直接跑到offsetRectBetweenParentAndChild()这个去了,然后这个方法里所有变量都看不到值,完全懵逼,一晚上没搞明白是怎么回事,哪位大哥有空的帮看下
...全文
1855 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
小笨蛋笨笨蛋 2018-12-12
  • 打赏
  • 举报
回复
measureChild(getChildAt(i), widthMeasureSpec, heightMeasureSpec);
把这行改成getChildAt(i).measure(你想要的width,你想要的height);即可
x443137254 2018-04-30
  • 打赏
  • 举报
回复
引用 5 楼 z979451341 的回复:
你这,继承ViewGroup必须实现onLayout函数,你自己定位函数都不清楚是怎么写,还看测量,你把每个子View的位置和大小打印出来,自己对比着看
onlayout肯定是有的,但是这个测量是跑在onlayout前面的,这个方法都测不出子view的大小,后面的方法里属性全是0。前面的都没跑通看后面的有什么意义。
x443137254 2018-04-30
  • 打赏
  • 举报
回复
本来想贴的,回头找发现全删掉了....算了有空再研究下
kingiis 2018-04-23
  • 打赏
  • 举报
回复
兄弟 你这继承的什么类啊
键盘舞者113 2018-04-23
  • 打赏
  • 举报
回复
上传你的项目,链接贴出来
键盘舞者113 2018-04-23
  • 打赏
  • 举报
回复
你这,继承ViewGroup必须实现onLayout函数,你自己定位函数都不清楚是怎么写,还看测量,你把每个子View的位置和大小打印出来,自己对比着看
键盘舞者113 2018-04-23
  • 打赏
  • 举报
回复
你把整个VIewGroup的代码贴出来
x443137254 2018-04-23
  • 打赏
  • 举报
回复
引用 2 楼 kingiis 的回复:
兄弟 你这继承的什么类啊
现在是直接继承ViewGroup,我去试试继承LinearLayout看看,话说这个有区别么
x443137254 2018-04-23
  • 打赏
  • 举报
回复
引用 1 楼 z979451341 的回复:
上传你的项目,链接贴出来
项目其他都是与之无关的,这就是个单独的自定义viewGroup,子view是几个TextView,本来只是想简单摆出个形状。

80,351

社区成员

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

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