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);
}
});