Android - View设置完成后有回调函数吗?

Android - Is there a callback function when a View is all set?

我有一个 custom View,我需要在其中执行需要设置视图大小的处理(因此 onCreate 不起作用),但在显示任何内容之前。所以我想知道是否有我可以覆盖的回调函数?

现在我正在使用 onLayout,但它似乎被调用了两次,所以我假设它可能不是正确的用途。我也尝试在 onMeasure 中这样做,但似乎 getWidth()getHeight 仍然在其中 returns 0

感谢,

罗宾.

尝试在onResume()

中使用OnGlobalLayoutListener
@Override
public void onResume(){
    super.onResume();

    ViewTreeObserver viewTreeObserver = yourView.getViewTreeObserver();
    if (viewTreeObserver.isAlive()) {
      viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {

            viewWidth = yourView.getWidth();
          viewHeight = yourView.getHeight();
            yourView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
          System.out.println(viewHeight + " on resume x" + yourView.getX()); 
        }
      });
    }  
}

您可以使用回调 OnSizeChanged

使用 onSizeChanged,

@Override
protected void onSizeChanged(int width, int height, int oldwidth, int oldheight) {
    super.onSizeChanged(width, height, oldwidth, oldheight);
    // your code here.
}

试试这些方法

 1.
ViewTreeObserver vto2 = imageView.getViewTreeObserver();
vto2.addOnGlobalLayoutListener(new

OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout () {
        imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        int height = imageView.getHeight();
        int width = imageView.getWidth();
        textView.append("\n\n" + imageView.getHeight() + "," + imageView.getWidth());
    }
}

);

2.

imageView.post(new Runnable() {
    @Override
    public void run () {
        int h = imageView.getHeight();
        int w = imageView.getWidth();
        Log.i(TAG, "Height=" + h);
    }
};