我正在创建一个带有一个文本字段的应用程序,但是当我输入一个带电源的数字时,它会显示错误。我需要阻止在EditText中输入数字的力量。我怎样才能做到这一点?
编辑:我还需要英文字母,而不仅仅是数字。我只想阻止一个数字的力量。因此android:inputType="number"
和android:inputType="numberDecimal"
对我不起作用。
答案 0 :(得分:2)
我能想到的三种方式(选择一种,或者它们的组合):
android:inputType="number"
在您的活动类中以编程方式设置输入文本:
EditText et = (EditText)findViewById(R.id.editText);
et.setKeyListener(DigitsKeyListener.getInstance("0123456789"));
如果您想让用户输入小数点,您也可以在其中添加句点。您甚至可以添加所有字母。
设置文本更改的侦听器,如下所示:
final EditText et = (EditText)findViewById(R.id.editText);
et.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s)
{
String text = et.getText().toString();
if (text.length() > 0) { // if EditText is not empty
// if last entered character was "^"
if (text.substring(text.length() - 1).equals("^"))
{
// last entered text was a caret so take it out
et.setText(text.substring(0, text.length() - 1));
et.setSelection(et.length()); // set the cursor to the end
}
}
}
@Override
public void onTextChanged(CharSequence s, int st, int b, int c)
{ }
@Override
public void beforeTextChanged(CharSequence s, int st, int c, int a)
{ }
});
注意:if (text.substring(text.length() - 1).equals("^"))
是可选的。您可以将"^"
更改为您不想在EditText中输入的任何字符。
答案 1 :(得分:1)
我不知道为什么人们会在这里投票,这是一个有效的问题。
首先,您应该确保输入4E-13之类的输入不是一个合理的用例。对科学定位的应用程序有意义。如果是这种情况,请更改输入解析逻辑。
如果不是这种情况,请使用TextWatcher来阻止用户输入文字。