没有调用View.onMeasure()

我有一个非常简单的自定义视图onMeasure()重写。 我的onMeasure()根据Drawable的背景决定大小。 当视图首先从xml创build时,一切正常。 但是,我编程设置了不同的背景,所以视图应该resize。 视图现在有不同的背景,但不resize,并且不调用onMeasure()

我尝试了一切 – requestLayout()forceLayout()invalidate()setLayoutParams() – 没有任何效果。 我究竟做错了什么? 我只是想要我的视图来resize。

Solutions Collecting From Web of "没有调用View.onMeasure()"

问题是我在我的视图的onSizeChanged()内调用setBackground()。 我重构了代码,现在它工作。

你有没有试过这个明显的东西,即你的方法是如何声明的?

如果你没有添加@override注解,添加它,并看看你的编译器告诉你,它不覆盖任何东西。 如果是这样,请检查onMeasure的名称和方法签名。

否则,请确保您了解何时应该调用measure()方法: Android如何绘制视图 。