我创建了一个自定义视图(我们称之为 MyView
),它基本上只是使用画布在自身上绘制一些文本。要绘制的文本使用全局变量设置。
在程序执行期间的某个时刻,我想更改全局变量,并让 MyView
重绘自身以更新文本。我尝试 findViewById()
然后 invalidate()
,但这什么都不做。我怀疑由于 MyView
中的任何内容都没有改变,它认为没有理由调用 onDraw()
。有什么方法可以强制 View 重绘自身,即使它认为不需要重绘?
原文由 David John Welsh 发布,翻译遵循 CC BY-SA 4.0 许可协议
在
View
中设置变量不会调用视图上的绘制。事实上,视图系统既不知道也不关心内部变量。在视图上调用
invalidate()
会导致它通过视图绘制自身。您应该检查一下:http: //developer.android.com/guide/topics/ui/custom-components.html 。当您调用
setText()
并使用通过setText()
调用设置的新文本时,ATextView
在内部使自身失效。你也应该做类似的事情。