Android:清除edittext时清除键盘输入

时间:2014-04-14 09:03:59

标签: android android-edittext android-keypad

我想为我的edittext设置一个自动千位分隔符。 我是用textwatcher做的。在

public void afterTextChanged(Editable s) 

我保存了edittext的当前值,并用

格式化
@Override
        public void afterTextChanged(Editable s) {

            InputField.this.removeTextChangedListener(this);
            double tmp = getDoubleValue();

            s.clear();
s.append(DecimalFormat.getInstance(Locale.GERMAN).format(tmp));

            InputField.this.addTextChangedListener(this);
        }

    });

但是Galaxy Tab中的键盘并不关心如果我清除了可编辑的内容。它保持当前输入并用完整的数字填充edittext。一个简短的例子:

我键入“1”,键盘插入“1”,编辑文本显示“1” 我键入“2”,键盘插入“12”,编辑文本显示“112” 我键入“3”,键盘插入“123”,编辑文本显示“112.123”
我按下删除按钮,键盘插入“12”,编辑文本显示“11.212.312” 我再次按下删除按钮,键盘插入“1”,编辑文本显示“112.123.121”

我的问题是: 如何禁用此键盘功能?enter image description here

或如何清理此键盘“缓存”?

如果我使用inputtype“numberDecimal”,它可以工作,但我不能使用点作为千位分隔符(但在德国需要它),因为它们将被解释为十进制标记,并且只能有一个。

1 个答案:

答案 0 :(得分:3)

我不确定您是否可以清理缓存,但是如何禁用建议栏...您可以以编程方式执行此操作:

YourEditText.setInputType(YourEditText.getInputType()
| EditorInfo.TYPE_TEXT_FLAG_NO_SUGGESTIONS
| EditorInfo.TYPE_TEXT_VARIATION_FILTER);

或者您可以在EditText XML标记中停用..您可以设置:

<EditText>
   android:inputType="textFilter
   .... />

你也可以使用这个值但不幸的是它并不适用于所有设备特别是HTC

android:inputType="textNoSuggestions"

修改

有时它不起作用,因为它可以通过键盘的实现来做正确的事情,包括Flags ..但是,一切都有一个解决方法,你可以在XML中尝试以下代码: / p>

android:inputType="textNoSuggestions|textVisiblePassword"

或在Java中:

yourEditText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

如果有效则给我一个反馈..