2013-02-24 144 views
0

也许这是一个简单的问题... 我现在正在研究一个绘图应用程序,其主要活动(A)正在扩展名为DoodleView的View。android在主要活动中获得扩展视图的维数

我知道如何通过onSizeChanged(int w, int h, int oldW, int oldH)来测量DoodleView中的尺寸,但我想知道如何在A中测量DoodleView的尺寸。我研究了一些其他类似的问题,但似乎大多数人都在问如何在扩展视图中获取维度。

我曾尝试在A的OnCreate以下内容:W和H.

private DoodleView doodleView; 
    doodleView = (DoodleView) findViewById(R.id.doodleView); 

    doodleViewWidth = doodleView.getMeasuredWidth(); 
    doodleViewHeight = doodleView.getMeasuredHeight(); 

    Toast.makeText(Doodlz.this, "W=" + doodleViewWidth + "H= "+doodleViewHeight, Toast.LENGTH_LONG).show(); 

而且敬酒报道0

是否有可能得到的主要活动中扩展视图的尺寸?我想问一下,因为在这个主要活动中还有一些GetActivityResult需要根据DoodleView维度来操作导入的图片。

非常感谢!

+1

in OnCreate()doodleView尚未测量。你有没有试图使用ViewTreeObserver来知道doodleView被绘制的时刻(此时它应该被测量)。 – sandrstar 2013-02-24 06:17:26

回答

0

这应该做的工作:

doodleView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     doodleViewWidth = doodleView.getWidth(); 
     doodleViewHeight = doodleView.getHeight(); 
     // here goes your code... 
    } 
}); 

编辑: 请注意,这两个变量不能在onGlobalLayout之前被访问()没有被调用至少一次(或他们只是0)。取决于你需要什么和什么时候你的代码的值看起来不同。 您可以将使用onGlobalLayout()方法中的值的代码放在一起,也可以使用Handler发送消息,以及在Handler的handleMessage()中处理消息。

+0

我已经尝试过,但它仍然返回null ... =(你有任何提示吗? – pearmak 2013-02-24 16:39:41

+0

请阅读我更新的答案。 – 2013-02-24 18:46:44