4

这是我的场景,

我只想在 EditText 字段的末尾获取数字和特定的特殊字符,例如 $。

例如:234.34 美元

输入此输入后我不想验证,而是用户只能输入十进制数字,最后输入这个特殊字符。

请有人帮我做这件事。

4

4 回答 4

3

您可以使用以下内容(以编程方式)

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;
            }
        }
    }
};
于 2013-11-14T10:25:38.640 回答
0

在编辑文本中添加属性android:inputType="numberDecimal"

于 2013-11-14T10:20:37.123 回答
0

在您的 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
    }
};
于 2013-11-14T10:25:18.473 回答
0

您只能接受使用 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”));

此代码将在读取输入后避免大量验证

于 2018-11-01T18:09:16.590 回答