view一个控件,因为我是linearlayout权重水平分布的,想成为一个正方形,而且他的宽度是根据手机分辨率来的,不清楚要给高多少才算是合适,而且直接用LayoutParms获取不到真实的宽度,所以我在等他绘制完成之后获取他的宽度,然后把高度设置为一样的,下面就贴出代码
//注册一个观察者来监听视图树??
ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();
viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
//获取绘制完之后的宽度
int width = ivImage.getMeasuredWidth();
//拿到View的LayoutParams
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
//将他的宽度赋值给高度,这样就是一个正方形了
layoutParams.height = width;
view.setLayoutParams(layoutParams);
}
});