0

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

我知道如何简单地测量 DoodleView 中的尺寸onSizeChanged(int w, int h, int oldW, int oldH),但我想知道如何测量 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。

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

非常感谢!

4

1 回答 1

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() 中进行处理。

于 2013-02-24T06:28:18.047 回答