起因
开启开发者模式里的过渡绘制以后,发现界面上封装的组件有冗余优化的空间
背景
自定义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);
}
网友评论