Android 末尾始终保持00.00的EditText

来源:互联网 发布:知乎 离火得花 编辑:程序博客网 时间:2024/06/05 09:24

产品要求变态的输入框:输入金额末尾始终保持00.00,比如用户输入1,其输出结果为100.00

<EditText        android:id="@+id/editText"        android:layout_width="match_parent"        android:layout_height="50dp"        android:inputType="numberDecimal"        android:minEms="0"/>
package com.example.test;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.text.Editable;import android.text.TextUtils;import android.text.TextWatcher;import android.widget.EditText;public class MainActivity extends AppCompatActivity {    private static String mSuffixStr = "00.00";    private boolean mIsFirstEdit = false;    private String beforeStr = "";    private String lastStr = "";    private String endStr = "";    private EditText inputNumEt;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        inputNumEt = (EditText) findViewById(R.id.editText);        inputNumEt.addTextChangedListener(new TextWatcher() {            @Override            public void beforeTextChanged(CharSequence s, int start, int count, int after) {                beforeStr = s.toString().trim();            }            @Override            public void onTextChanged(CharSequence s, int start, int before, int count) {                String sStr = s.toString().trim();                if (TextUtils.isEmpty(sStr)) {                    return;                } else {                    if (!mIsFirstEdit) {                        mIsFirstEdit = true;                        if (beforeStr.contains(mSuffixStr)) {                            lastStr = beforeStr.replace(mSuffixStr, "");                        } else {                            lastStr = beforeStr;                        }                    }                    if (sStr.contains(mSuffixStr)) {                        String sp = sStr.replace(mSuffixStr, "");                        if (!sp.equals("")) {                            boolean b = sp.matches("[^1-9]+");                            if (b) {                                inputNumEt.setText(mSuffixStr);                                return;                            }                        }                    }                    if (sStr.equals("0") && count == 1) {                        endStr = null;                        inputNumEt.setText("");                        return;                    }                    if (sStr.equals(".") && count == 1) {                        endStr = null;                        inputNumEt.setText("");                        return;                    }                    if (sStr.equals("")) {                        endStr = null;                        inputNumEt.setText(mSuffixStr);                        return;                    }                    if (endStr != null && (beforeStr + mSuffixStr).equals(endStr)) {                        return;                    } else {                        if (sStr.equals(beforeStr)) {                            return;                        }                        if (sStr.length() < beforeStr.length()) {                            //delete//                            for (int i = 0; i < sStr.length(); i++) {//                                if (beforeStr.contains(sStr.charAt(i) + "")) {//                                    if ((sStr.charAt(i) + "").equals(".")) {//                                        beforeStr = beforeStr.replaceFirst("\\" + sStr.charAt(i) + "", "");//                                    } else {//                                        beforeStr = beforeStr.replaceFirst(sStr.charAt(i) + "", "");//                                    }//                                }//                            }//                            StringBuffer stringBuffer = new StringBuffer(lastStr);//                            String revStr = stringBuffer.reverse().toString();////                            if (sStr.contains(mSuffixStr) && beforeStr.equals("0")) {//                                sStr = new StringBuffer(revStr.replaceFirst(beforeStr, "")).reverse().toString();//                            }else if (!sStr.contains(mSuffixStr) && (beforeStr.equals("0") || beforeStr.equals("."))){//                                if(lastStr.length() - 1 >= 0) {//                                    sStr = lastStr.substring(0,lastStr.length() - 1);//                                }//                            }                            if(lastStr.length() - 1 >= 0) {                                sStr = lastStr.substring(0,lastStr.length() - 1);                            }                        } else {                            //input                            String ls = lastStr + mSuffixStr;                            for (int i = 0; i < ls.length(); i++) {                                if (sStr.contains(ls.charAt(i) + "")) {                                    if ((ls.charAt(i) + "").equals(".")) {                                        sStr = sStr.replaceFirst("\\" + ls.charAt(i) + "", "");                                    } else {                                        sStr = sStr.replaceFirst(ls.charAt(i) + "", "");                                    }                                }                            }                            if (sStr.equals("") || sStr.equals(".")) {                                return;                            }                            sStr = lastStr + sStr;                        }                        if (sStr.contains(mSuffixStr)) {                            lastStr = sStr.replace(mSuffixStr, "");                        } else {                            lastStr = sStr;                        }                        endStr = lastStr + mSuffixStr;                        inputNumEt.setText(endStr);                        inputNumEt.setSelection(lastStr.length());                    }                }            }            @Override            public void afterTextChanged(Editable s) {            }        });    }}
0 0
原创粉丝点击