It turns out the setTextColor takes an optional second parameter which is the background color. This allows in place update of text. The downside is using a font other than the default breaks this.