android在主要活动中获取扩展视图的维度

时间:2013-02-24 06:09:25

标签: android view dimension

也许这是一个简单的问题...... 我现在正在开发一个绘图应用程序,主要活动(A)正在扩展名为DoodleView的视图。

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

我在A OnCreate中尝试了以下内容:

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

吐司报告W和H都为0。

是否可以在主要活动A中获取扩展视图的维度?我想问一下,因为在这个主要活动中还有一些GetActivityResult需要根据DoodleView维度操纵导入图片。

非常感谢!

1 个答案:

答案 0 :(得分: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()中处理。