private void getPicDetails() {
targetW = img_cow.getWidth();
targetH = img_cow.getHeight();
Log.e("targetW: ", "" + targetW);
Log.e("targetH: ", "" + targetH);
}
我有一个图像视图,上面的方法获取高度和宽度来打印高度和宽度的值。现在,当我在onCreate中调用getPicDetails()
时,值为0,与我在OnStart
和onResume
中的值相同。
我的问题是:我应该在哪里放置我的方法,使imageview初始化并存在?
答案 0 :(得分:2)
你可以在 onWindowFocusChanged
内打电话@Override
public void onWindowFocusChanged(boolean hasFocus){
int width=imageView.getWidth();
int height=imageView.getHeight();
}
答案 1 :(得分:0)
在我的Android应用程序的生命周期中,我应该获得宽度和高度 图像视图
布局完成后:
@Override
public void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
getPicDetails();
}
答案 2 :(得分:0)
你可以使用我做的下一个功能:
public static void runJustBeforeBeingDrawn(View view, Runnable runnable)
{
ViewTreeObserver.OnPreDrawListener preDrawListener = new ViewTreeObserver.OnPreDrawListener(view, runnable)
{
public boolean onPreDraw() {
ViewUtil.this.getViewTreeObserver().removeOnPreDrawListener(this);
runnable.run();
return true;
}
};
view.getViewTreeObserver().addOnPreDrawListener(preDrawListener);
}
编辑:runJustBeforeBeingDrawn的替代方案:https://stackoverflow.com/a/28136027/878126