也许这是一个简单的问题...... 我现在正在开发一个绘图应用程序,主要活动(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维度操纵导入图片。
非常感谢!
答案 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()中处理。