我在用 EditText 做计算器的屏幕,对 EditText 的设置是这样的
setInputType(InputType.TYPE_NULL);
setTextDirection(TEXT_DIRECTION_RTL);
setTextSize(mCurrentTextSP);
我写了个 appendTail 函数
public void appendTail(String c) {
// mContent 是一个 StringBuffer
mContent.append(c);
Log.d(TAG, mContent.toString());
setText(mContent);
}
当我输入了某个数比如 697 ,然后再输入'+'号时,屏幕上本应该是 697+,但是却总是显示+697 ,然后如果在输入一个数,比如 8 ,这时却又变正常了,显示 697+8.
这是为什么?求大神看看
1
jedrek 2015-11-26 10:01:02 +08:00
可尝试将 EditText 的设置去掉试试
将 mContent toString()后再 setText 试试 |
2
xhuuanniqege OP @jedrek 确实是设置问题,本来想实现从右到左输入的 EditText ,
setTextDirection(TEXT_DIRECTION_RTL);只对从右到左的字符,如阿拉伯语等有效。 换成 setGravity(Gravity.RIGHT | Gravity.BOTTOM);并在每次 append 后 使用 CalculatorDisplay.this.setSelection(mContent.length());也可以实现同样的效果 |