我创建了一个自定义视图,并将其添加到xml文件中的布局中。我正在尝试使用单击事件刷新自定义视图,但我无法弄清楚如何从其他类调用onDraw方法。 invalidate和postInvalidate不会刷新自定义视图。
答案 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()机制进行通信按钮和另一个视图。
如果需要,此方法还允许所有其他组件与您的自定义视图进行良好的交互。