强制视图重绘自身

新手上路,请多包涵

我创建了一个自定义视图(我们称之为 MyView ),它基本上只是使用画布在自身上绘制一些文本。要绘制的文本使用全局变量设置。

在程序执行期间的某个时刻,我想更改全局变量,并让 MyView 重绘自身以更新文本。我尝试 findViewById() 然后 invalidate() ,但这什么都不做。我怀疑由于 MyView 中的任何内容都没有改变,它认为没有理由调用 onDraw() 。有什么方法可以强制 View 重绘自身,即使它认为不需要重绘?

原文由 David John Welsh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 307
2 个回答

如果我在 MyView 中有一个存储文本的成员变量,并为它创建一个公共设置器,那么只需调用该方法就会导致 MyView 重绘自身

View 中设置变量不会调用视图上的绘制。事实上,视图系统既不知道也不关心内部变量。

在视图上调用 invalidate() 会导致它通过视图绘制自身。您应该检查一下:http: //developer.android.com/guide/topics/ui/custom-components.html

当您调用 setText() 并使用通过 setText() 调用设置的新文本时,A TextView 在内部使自身失效。你也应该做类似的事情。

原文由 Vikram Bodicherla 发布,翻译遵循 CC BY-SA 3.0 许可协议

好的,所以我想通了。如果我在 MyView 中有一个存储文本的成员变量,并为其创建一个公共设置器,那么只需调用该方法就会导致 MyView 重绘自身。简单的!

原文由 David John Welsh 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏