相关疑难解决方法(0)

格式化货币输入editText的更好方法?

我有一个editText,起始值是0.00美元.按1时,它变为$ 0.01.按4,它达到$ 0.14.按8,$ 1.48.按退格键,0.14美元等

这是有效的,问题是,如果有人手动定位光标,格式化中会出现问题.如果他们要删除小数,它就不会回来.如果他们将光标放在小数前面并输入2,它将显示$ 02.00而不是$ 2.00.例如,如果他们试图删除$,它将删除一个数字.

这是我正在使用的代码,我很感激任何建议.

mEditPrice.setRawInputType(Configuration.KEYBOARD_12KEY);
    public void priceClick(View view) {
    mEditPrice.addTextChangedListener(new TextWatcher(){
        DecimalFormat dec = new DecimalFormat("0.00");
        @Override
        public void afterTextChanged(Editable arg0) {
        }
        @Override
        public void beforeTextChanged(CharSequence s, int start,
                int count, int after) {
        }
        @Override
        public void onTextChanged(CharSequence s, int start,
                int before, int count) {
            if(!s.toString().matches("^\\$(\\d{1,3}(\\,\\d{3})*|(\\d+))(\\.\\d{2})?$"))
            {
                String userInput= ""+s.toString().replaceAll("[^\\d]", "");
                if (userInput.length() > 0) {
                    Float in=Float.parseFloat(userInput);
                    float percen = in/100;
                    mEditPrice.setText("$"+dec.format(percen));
                    mEditPrice.setSelection(mEditPrice.getText().length());
                }
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

android

81
推荐指数
7
解决办法
9万
查看次数

Android EditText AddTextChangeListener 货币格式

通过 SO,我将以下 EditText addTextChangedListener 事件处理程序放在一起,除了我需要的一些改进外,它工作正常。当我输入时,它会从右到左填充数字。我宁愿它从左到右填充。现在,如果我输入 50,它的格式为 $0.50,当我输入 50 时,我希望它的格式为 $50.00

下面是 xml 声明和 Java 代码,请有人指出我需要更改的内容以获得所需的结果。

在此处输入图片说明

XML 声明

    <EditText
        android:id="@+id/valueEditText"
        android:layout_row="1"
        android:hint="@string/hint_value_to_add"
        android:imeOptions="actionNext"
        android:inputType="numberDecimal"
        style="@style/EnrollEditViewStyle" />
    <requestFocus />
Run Code Online (Sandbox Code Playgroud)

Java代码

      inputValue = (EditText) findViewById(R.id.valueEditText);
        inputValue.addTextChangedListener(new TextWatcher() {
            private String current = "";
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                                          int after) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable s) {
                if (!s.toString().equals(current)) { …
Run Code Online (Sandbox Code Playgroud)

android android-edittext

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

android ×2

android-edittext ×1