所以我在Android上使用Delphi XE-8,使用线程在后台工作。而且我有一个计时器从主线程更新时钟的标签(也许有更有效的方法来做到这一点)。
现在,当我在 Android 上启动我的应用程序时,时钟的字符会随机缩小或放置在字符应位于的上方或下方。在应用程序的生命周期内,相同的字符会发生这种情况,当我关闭并重新启动应用程序时,它可能是不同的字符。通常一个数字有一个指数的大小,有时这个字符根本就没有。还有一次,这个错误根本没有出现......它发生了大约 4-5 次中的 1 次。
在图片(下)中,“5”被放置在标签的中间位置,2 是不可见的(可能完全在可见标签的上方或下方)。
时钟代码如下所示:
procedure TPage0Form.ClockTimerTimer(Sender: TObject);
begin
ClockTimer.Interval := 1000;
Page0Form.lb_Clock.Text:= ( TimeToStr(Time));
end;
所以我尝试了多种方法。1. 将时钟放在一个线程中,使用同步调用更新到 UI。2. 使用位图而不是标签(同样的问题)。3. 调整标签的设置,labelsize,textsize,fonts,textAlignment,margin,padding 等。但都无济于事。
我正在使用具有所需(其中一些不是)处理器的多个 Android 设备,并且所有这些设备上都出现了该错误。
是否有合乎逻辑的解释(我做错了什么)以及如何解决这个问题?
感谢您的时间和精力。
编辑:XE6 和 XE7 也会发生这种情况... Edit2:我也尝试过使用:
FMX.Types.GlobalUseGDIPlusClearType
FMX.Types.GlobalUseDirect2D
FMX.Types.GlobalUseGPUCanvas
没有人改善这种情况。