【问题标题】:View.onMeasure() not calledView.onMeasure() 未调用
【发布时间】:2011-12-07 17:52:21
【问题描述】:

我有一个非常简单的自定义视图,其中 onMeasure() 被覆盖。我的onMeasure()根据背景Drawable决定大小。当第一次从 xml 创建视图时,一切正常。但后来我以编程方式设置了不同的背景,所以视图应该调整大小。视图现在具有不同的背景,但它不会调整大小并且不会调用 onMeasure()

我尝试了所有方法 - requestLayout()forceLayout()invalidate()setLayoutParams() - 没有任何效果。我究竟做错了什么?我只是想让我的视图调整大小。

【问题讨论】:

    标签: android layout view


    【解决方案1】:

    问题是我在 View 的 onSizeChanged() 中调用了 setBackground()。我重构了代码,它现在可以工作了。

    【讨论】:

      【解决方案2】:

      您是否尝试过显而易见的事情,即您的方法是如何声明的?

      如果您没有添加 @override 注释,请添加它,然后查看您的编译器是否告诉您它没有覆盖任何内容。如果是,请检查onMeasure 的名称和方法签名。

      否则,请确保您了解何时应该调用 measure() 方法:How Android draws Views

      【讨论】:

      • 是的,我正在使用@Override - 我看到我的 onMeasure() 在创建 Activity 时被调用了两次。但它不是在 View.setBackground() 之后调用的。
      • 您链接的文章建议 requestLayout() 应该可以工作,但它没有。
      猜你喜欢
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 2018-01-09
      相关资源
      最近更新 更多