这是我的场景,
我只想在 EditText 字段的末尾获取数字和特定的特殊字符,例如 $。
例如:234.34 美元
输入此输入后我不想验证,而是用户只能输入十进制数字,最后输入这个特殊字符。
请有人帮我做这件事。
这是我的场景,
我只想在 EditText 字段的末尾获取数字和特定的特殊字符,例如 $。
例如:234.34 美元
输入此输入后我不想验证,而是用户只能输入十进制数字,最后输入这个特殊字符。
请有人帮我做这件事。
您可以使用以下内容(以编程方式)
ed.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
ed.setKeyListener(DigitsKeyListener.getInstance("0123456789.$"));
您可以在DigitsKeyListener.getInstance
或者如果不希望用户输入 $ 符号并且您希望在用户完成编辑后手动输入...
@Override
protected OnFocusChangeListener getOnFocusChangeListener() {
return new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
//Member variable in the class which contains an EditText
CurrencyTextbox.this.hadFocus = true;
} else {
// Thes EditText has lost focus
Log.v(TAG, "Lost focus.");
if (CurrencyTextbox.this.hadFocus) {
// We previously had focus, now we lost it, format the user input!
// Get current value of the Textbox
String value = CurrencyTextbox.this.textbox.getText().toString();
// Formatting the user input
value = String.format(//Doing some formatting);
// Reset the had focus
CurrencyTextbox.this.hadFocus = false;
}
}
}
};
在编辑文本中添加属性android:inputType="numberDecimal"
在您的 EditText 中使用它android:inputType="numberDecimal"
在 Class 文件中添加TextWatcher
如下EditText
代码,并在方法afterTextChanged(Editable s)
中在 EditText 的文本末尾添加“$”。
EditText input = (EditText) findViewById(R.id.search_text_box);
input.addTextChangedListener(onInputTextChanged);
public TextWatcher onInputTextChanged = new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
}
@Override
public void afterTextChanged(Editable s)
{
// Add "$" at the end of text in EditText
}
};
您只能接受使用 java 代码的数字和电话号码类型
EditText number1 = (EditText) layout.findViewById(R.id.edittext);
number1.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
number1.setKeyListener(DigitsKeyListener.getInstance("Replace with your special characters”));
此代码将在读取输入后避免大量验证