2013-10-30 16 views
2

這是我的源代碼來創建一個新的ImageView:ImageView:getWidth()與getLayoutParams()不同。

ImageView image = new ImageView(this); 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      params.width = screen_dimens(0.5, "w"); 
      params.height = screen_dimens(0.5, "w"); 
      image.setLayoutParams(params); 

screen_dimens(0.5, "w") = 50的屏幕寬度的百分比)

但現在,當我想要得到的圖像的寬度,我得到如下結果:
image.getWidth()=> 0
image.getLayoutParams()寬度=> 360

現在是什麼這兩個函數之間的差異?我怎樣才能設置圖像寬度,所以getWidth()方法也返回正確的值?

回答

2

使用此設置寬度和高度:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(100, 100); 
iv.setLayoutParams(layoutParams); 
0

u可以使用

image.post(new Runnable() { 
     public void run() { 
      image.getMeasuredHeight(); 
     } 
    }); 

,而不是

image.getWidth() 
1

即使您已設置的寬度和高度爲一個ImageView的或任何通過使用LayoutParams進行查看, imageView.getWidth()始終返回0,直到它被繪製到它的粗糙NT。