如何从其他类调用onDraw?

时间:2012-01-07 14:02:49

标签: android

我创建了一个自定义视图,并将其添加到xml文件中的布局中。我正在尝试使用单击事件刷新自定义视图,但我无法弄清楚如何从其他类调用onDraw方法。 invalidate和postInvalidate不会刷新自定义视图。

4 个答案:

答案 0 :(得分:4)

您应该在视图中创建方法,从视图内部进行更改和调用无效。

public void setTextSize (int size) {
      mTextSize = size; 
      invalidate();
}

完美适合我。

答案 1 :(得分:0)

绝对应该调用View.invalidate()。确保视图可见且已测量尺寸 - 即确保视图getMeasuerdWidth()和getMeasuerdHeight()返回> 0.

您在提取方法的开头放置一条日志消息以验证它是否有效。但绝对应该是无效的()。您的数据可能没有变化?

答案 2 :(得分:0)

使调用onDraw()方法的视图结果无效。

通过从不同的类调用customViewClassName.invalidate()来调用onDraw()方法。

答案 3 :(得分:0)

我会使用消息处理程序来实现这种机制。在自定义View类中,创建一个Handler,然后将此处理程序的引用传递给按钮(例如,在Activity的onCreate事件中),然后使用sendMessage()/ handleMessage()机制进行通信按钮和另一个视图。

如果需要,此方法还允许所有其他组件与您的自定义视图进行良好的交互。