java - Canvas.drawText 中的双重转义百分号 (%)

标签 java android

有谁知道为什么我在尝试将字符串格式的浮点值绘制在 Canvas 上时必须双重转义百分号 (%)?请参阅下面的相关代码行...

float mValue = .25F;    
String percent = String.format(Locale.getDefault(), "%.0f%%%%", mValue * 100);
canvas.drawText(percent, 0, percent.length() - 1, posX, posY, mTextPaint);

这将在 View Canvas 上渲染25%。如果我尝试以下字符串格式...

String percent = String.format(Locale.getDefault(), "%.0f%%", mValue * 100);

它将简单地渲染 25 而不带百分号。我在这里缺少什么明显的东西吗? 我在 API 级别 27 的模拟器上运行它,并使用 API 级别 28 进行编译

最佳答案

我最好的选择是 .drawText() 切断字符串中的最后一个字符。当我只是尝试格式化百分比时,它实际上在末尾有“%%”。

尝试使用下面不带字符串范围的代码来绘制全文,看看它是否会被截断。

canvas.drawText(percent, posX, posY, mTextPaint);

关于java - Canvas.drawText 中的双重转义百分号 (%),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53474091/

相关文章:

java - 即使列表中没有项目,Android ArrayList 大小也返回 1

java - 单击时选择 JavaFX 可编辑组合框文本

java - 如何使用java的ResultSet获取mysql的float的精确值

java - 在PreparedStatement和ResultSet中操作setter和getter

java - Android:从 XML 颜色常量以编程方式设置颜色

Android NYTimes 滑动动画/手势

java - Spring @ResponseBody 注释是如何工作的?

android - 将二维对象数组传递给另一个 Activity

java - Android慢速AES解密

android - 尝试运行时在我的第一个Flutter应用中出现错误