【发布时间】:2023-04-22 05:25:01
【问题描述】:
我正在使用 Android,我遇到了有史以来最奇怪的错误之一。 此函数检查我是否可以为 Paint 对象设置更大的字体。
我在这里看到的是,即使第一个 if 语句是 TRUE ......并且下一个也是 true,在返回值“true”之后......它会跳转到最后一个“return false; "这是绝对不可能的!
你们中有人知道为什么会发生这种情况吗?谢谢 !!!
private boolean fontCanBeBigger(String text, Paint paint, Canvas canvas, int divisor){
if (textFitsOneLine(text, paint, canvas))
{
paint.setTextSize(divisor-2);
if (textFitsOneLine(text, paint, canvas) && (divisor > MIN_DIVISOR))
{
paint.setTextSize(divisor+2);
return true;
}
else
{
paint.setTextSize(divisor+2); //set it back to previous value
return false;
}
}
else { return false; }
}
private boolean textFitsOneLine(String text, Paint paint, Canvas canvas)
{
int length = paint.breakText(text, true,(float) canvas.getWidth()- MARGIN, null);
return length >= text.length();
}
【问题讨论】:
-
Do any of you have any idea why this could be happening?不是没有看到textFitsOneLine()的代码 -
这里有:
private boolean textFitsOneLine(String text, Paint paint, Canvas canvas){ int length=paint.breakText(text, true,(float) canvas.getWidth()- MARGIN, null); return length >= text.length(); } -
您认为您如何观察到它返回了
true,然后返回了false?我认为更有可能的是,也许你调用了 1`fontCanBeBigger` 两次,它返回 true 然后返回 false。 (也许它曾经返回 true,paint 变大,所以下一次textFitsOneLine是 false) -
启动应用程序时,我看到结果为假...所以我调试应用程序,调试时我看到它进入 if 语句,进入下一个,返回 true ,然后它直接返回 false,这就是我得到的。
标签: android if-statement return