解决<merge>标签下高度无效

起因

开启开发者模式里的过渡绘制以后,发现界面上封装的组件有冗余优化的空间

背景

自定义View继承了一个ViewGroup,在XML文件写的布局,根节点从RelativeLayout(LinearLayout,FrameLayout同理)改成了merge,并添加了parentTag为RelativeLayout来达到减少一级嵌套

造成的结果

这个自定义View你不知道他的父级组件是谁,同时指定merge的高度也无用,因此在初始化的时候getLayoutParams会报空

处理方案

重写onMeasure,直接设置mode和size,注意!!写在super.onMeasure()的前面

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {           
      heightMeasureSpec=MeasureSpec.makeMeasureSpec(WidgetUtil.auto_height_px(ivBack.getContext(), getResources().getDimension(R.dimen.p45)), MeasureSpec.EXACTLY);
      super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2017.8.17(170—120)《36》 今天听一土豪聊起他的家事,他的大儿子生了两个孙子,他非常高兴,...
    方正省阅读 199评论 0 1
  • 请E美美带了两个扭蛋和一瓶咳嗽水。 怎么办,没有新衣服不想见面啊。 每次和蜜蜜约之前都认真搭配。是不是心口不一,我...
    唐四月阅读 391评论 0 0
  • 在德波战争中波兰为什么会失败呢?我认为原因有三点: 一、波兰军队没有见过坦克,他们认为坦克只是德军用锡板做成的伪装...
    纸上谈兵123阅读 315评论 0 1
  • (河北隆化一小镇所见) 塞外小镇曲, 男女当街赌。 天高皇帝远, 雷池可载舞? 2014年6月于河北隆化张三营
    匿身幽处阅读 91评论 0 1