2014-09-24 53 views
0

一个项目IAM工作返回0,我需要的高度的形象图的宽度,我只是调用getwidth()getheight()通常这样图像视图的getWidth()和getHeight()京瓷手机

int targetW = mImageView.getWidth() ; 
int targetH = mImageView.getHeight(); 

其工作正常所有类型的Android手机,但是当我尝试一个京瓷水电话其返回零! 我将图像视图呈现给屏幕后调用它,因为我在点击视图本身时调用它们。

有什么建议吗?

编辑: 其工作罚款所有手机除京瓷水电电话

回答

1

试试这个

mImageView.getViewTreeObserver().addOnGlobalLayoutListener(
      new OnGlobalLayoutListener() { 

       @Override 
       public void onGlobalLayout() { 
        Toast.makeText(getContext(), mImageView.getWidth() + "", Toast.DURATION_SHORT).show(); 

        // remove OnGlobalLayoutListener, check Android version too 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) 
         mImageView.getViewTreeObserver() 
           .removeOnGlobalLayoutListener(this); 
        else 
         mImageView.getViewTreeObserver() 
           .removeGlobalOnLayoutListener(this); 
       } 
      }); 
+0

你能解释一下为什么吗?它必须适用于所有的api版本 – Mothana 2014-09-24 07:01:45

+0

,据我所知,有一些要点需要指出: 1:OnGlobalLayoutListener将在您的整个视图生成后立即激活其onGlobalLayout()方法(请检查Document for更多信息)。因此,在那个时间点,您将拥有View的值(而不是在MATCH_PARENT或WRAP_CONTENT的情况下为-1或-2)。 2:OnGlobalLayoutListener已在版本中更新(GlobalOnLayoutListener为OnGlobalLayoutListener),因此您必须在使用版本时检查版本。 这个问题你好吗? – 2014-09-24 07:31:35

+0

我会测试它,但为什么它的工作除了京瓷???所有手机! – Mothana 2014-09-24 08:33:12

相关问题