假设一个textview
TextView tvSum = findViewById(R.id.sumTexviewId);
Run Code Online (Sandbox Code Playgroud)
如果我想更改显示的文本,我这样做:
tvSum.setText("£0.00");
Run Code Online (Sandbox Code Playgroud)
现在,假设我经常这样做,每次按下按钮时都说,也许显示在一个按钮上输入的总和.在这个例子中,你按一个,它说"1p",然后按两个,它说"12p",依此类推.
我发现如果我这样做,文本会在一段时间后变形.对于序列12345,从一切开始是好的:
(没什么压力)
("1"按下)
(然后按下"2")
(然后按下"3")然而,事情变得混乱之后:
(然后按下"4")
(然后按下"5")之后它永远不会变得更好.我没有发布代码,因为代码真的很简单:一堆按钮,只写一个短字符串到一个textview - 代码中的任何内容都不应该导致这个,诚实.(是的,我已经通过把它放在Toast上来检查写入的字符串是否正确.)是否还有其他人遇到过这个问题,如果有的话是什么解决了它?
事实证明,Mr.Me正朝着正确的方向前进,这与文本更改时渲染背景的方式有关.我使用颜色0x00000000设置(有意)按钮在黄色轮廓内部有一个透明背景(而不是未指定).
出于某种原因,当应用非完全不透明的填充时,新的背景将放在先前的内容上(我认为是大约3个位图的循环),而不是定义内容.我想这可能是由于Canvas使用的默认PorterDuff传输模式.
我在解决这个问题时想出了解决方案:
onDraw在调用之前覆盖以主动填充画布0x00 super.onDraw().(缺点:这摆脱了这个观点中的任何背景,但保留了这个观点背后的观点.为"不做任何花哨的"声明道歉 - 我没有意识到积极地将背景设置为透明计算为幻想!
| 归档时间: |
|
| 查看次数: |
1257 次 |
| 最近记录: |