View.onMeasure()未被调用

10

我有一个非常简单的自定义View,并覆盖了onMeasure()方法。我的onMeasure()方法会根据背景Drawable来决定大小。当从xml创建View时,一切正常工作。但是当我以编程方式设置不同的背景时,View应该重新调整大小。View现在具有不同的背景,但它没有调整大小,并且onMeasure()方法也没有被调用。

我尝试了各种方法- requestLayout(), forceLayout(), invalidate(), setLayoutParams() - 但都没有效果。我做错了什么? 我只想让我的View重新调整大小。

2个回答

1
问题在于我在View的onSizeChanged()中调用了setBackground()。我重新编写了代码,现在它可以工作了。

-1

你试过显而易见的方法了吗,即检查你的方法声明方式?

如果你没有添加 @override 注解,请加上并检查编译器是否提示未覆盖任何内容。如果是这样,请检查 onMeasure 的名称和方法签名。

否则,请确保你理解 measure() 方法应该在何时调用:Android View 绘制流程详解


是的,我正在使用 @Override - 我发现当我的 Activity 被创建时,我的 onMeasure() 方法被调用了两次。但是在 View.setBackground() 之后它没有被调用。 - fhucho
你提供的文章建议使用requestLayout()方法,但实际上并不起作用。 - fhucho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接