最近在项目中测量view的宽高,调用measure()方法时,报空指针。
原因是android系统的一个bug,android4.4(API19)以上是没问题的,以下是会崩溃的。
解决方法有二:
1、不使用relativelayout,用LinearLayout或者FrameLayout代替。
2、在调用measure方法前,为view设置
view.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
如我的项目中:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
Log.i(“标签**”, positionInfo.getSignlist().get(i).getX() + “图片Y—-” + positionInfo.getSignlist().get(i).getY());
PictureTagView pic;
if (positionInfo.getSignlist().get(i).getX() > 0.5) {
pic = new PictureTagView(context, PictureTagView.Direction.Right, positionInfo.getSignlist().get(i).getDescribe());
} else {
pic = new PictureTagView(context, PictureTagView.Direction.Left, positionInfo.getSignlist().get(i).getDescribe());
}
//在测量前,先view设置setLayoutParams
pic.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
int w = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED);
//测量高宽
pic.measure(w, h);
int height = pic.getMeasuredHeight();
int width = pic.getMeasuredWidth();
//然后在将测量到的宽高设置给view 解决relativelayout空指针问题
pic.setLayoutParams(new LinearLayout.LayoutParams(width,height));
//标签的x与标签宽的一半之和 大于屏幕的一半 证明标签是在右边
if (width/2+positionInfo.getSignlist().get(i).getX()* screenWidth>screenWidth/2){
params.leftMargin = (int) (positionInfo.getSignlist().get(i).getX() * screenWidth-width);
params.topMargin = (int) ((positionInfo.getSignlist().get(i).getY()) * scaleHeight-height/2);
}else{
params.leftMargin = (int) (positionInfo.getSignlist().get(i).getX() * screenWidth);
params.topMargin = (int) ((positionInfo.getSignlist().get(i).getY()) * scaleHeight-height/2);
}
final String brandId = positionInfo.getSignlist().get(i).getBrandId();
// viewParent.addView(pic, params);
relative_image.addView(pic, params);
relativelayout meseasure 空指针
最新推荐文章于 2021-05-25 22:47:52 发布