强制视图重绘自身

2022-09-01 03:11:50

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

在程序执行过程中的某个时刻,我想更改全局变量,并进行重绘本身以更新文本。我试过了,然后,但这无济于事。我怀疑由于内部没有任何变化,它认为它没有理由打电话。有没有办法强制视图重新绘制自己,即使它认为不需要?MyViewfindViewById()invalidate()MyViewonDraw()


答案 1

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

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

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

当您调用并使用通过调用设置的新文本重绘自身时,A 在内部使自身失效。您还应该执行类似的操作。TextViewsetText()setText()


答案 2

好吧,所以我想通了。如果我在 里面有一个成员变量来存储文本,并为它创建一个公共 setter,那么只需调用该方法就会导致 重绘自身。简单!MyViewMyView


推荐