我看到了与此问题非常相似的问题的其他答案。但是,我希望我的计算器显示出正常的数字到13位数字,然后添加14位数字时,开始以科学符号为单位。另外,我希望文本的大小可以减少数字数量的交叉数(就像我在电话上使用的计算器之一中一样)例如。
123456(最大文本大小)
1234567(文本大小降低一个单元)
12345678(文本大小减少一个单元)
123456789(文本大小减少一个单元)
1234567890(文本大小减少一个单元)
12345678901(文本大小将进一步减小单元以适合显示文本视图上的所有数字)
1234567890123(文本大小一直缩小到13位数字 - 这是最小文本大小,因此不进一步减少)
添加一位数字时: 1.2345678901234×10^12(数字以科学符号显示)
我无法弄清楚应用程序工作时如何更改文本大小以及如何以科学符号显示数字 - 只有在数字超过13位数字之后。
谢谢。
我会创建一个称为scientificNotifationTextView的文本视图子类。然后像这样覆盖setText函数:
public void setText(CharSequence text) {
int length = text.size();
setTextSize(getSizeForLength(length));
if(length > 13) {
NumberFormat formatter = new DecimalFormat("0.#####E0");
super.setText(formatter.format(text.toString());
}
else {
super.setText(text);
}
}
这里getizeForLength应该返回您要为该长度使用的任何文本大小。