Android 在TextView上调用setText是否会导致它重新绘制,即使它是再次设置的同一文本?
我有一个Android 在TextView上调用setText是否会导致它重新绘制,即使它是再次设置的同一文本?,android,android-view,Android,Android View,我有一个活动,它有很多文本视图。目前,我在ViewModel上为每个文本视图的每个单独值使用单独的观察者,因此它们会随着ViewModel中数据的更改而更新 但是,如果我只是观察一个包含该活动中要显示的所有数据的对象,那就更容易了 这是否会导致所有textview重新绘制,即使我使用textview已经具有的相同值调用setText?或者,只有新文本值与旧文本值不同的textview才会重新绘制 默认行为是什么样的?对于其他类型的视图,如复选框或图像视图?Android在TextView元素中有
活动
,它有很多文本视图
。目前,我在ViewModel
上为每个文本视图的每个单独值使用单独的观察者,因此它们会随着ViewModel
中数据的更改而更新
但是,如果我只是观察一个包含该活动中要显示的所有数据的对象,那就更容易了
这是否会导致所有textview
重新绘制,即使我使用textview
已经具有的相同值调用setText
?或者,只有新文本值与旧文本值不同的textview
才会重新绘制
默认行为是什么样的?对于其他类型的视图,如
复选框
或图像视图
?Android在TextView
元素中有一个名为checkForRelayout
的方法调用setText
。
只要看一眼,我们就会发现这个观点将是无效的
对于复选框
查看元素,它将当前值保存在mprivatelags
中,并在setSelected
方法的第一行中,将其与当前值进行比较,如果当前值未更改,则不调用invalidate
对于
ImageView
它使用旧值进行检查,如果可绘制的值相同,它不会调用invalidate
方法是,如果这样做,每个textview都会重新写入值……这种情况适用于所有ImageView和复选框