EditText 설정은 정수 금액만 입력할 수 있습니다.

6912 단어 android금액
1. 숫자로 유형 설정
<EditText
                android:id="@+id/input_edit"
                android:layout_width="36dp"
                android:layout_height="wrap_content"
                android:background="@null"
                android:focusable="true"
                android:gravity="center"
                android:hint="0"
                android:numeric="integer"
                android:singleLine="true" />

2. 입력 내용 필터링
EditText  input_edit= (EditText) findViewById(R.id.input_edit);
InputFilter[] filters = {new CashierInputFilter()};
        input_edit.setFilters(filters);

3. 필터링 기준: 정수만 입력할 수 있고 최대값은 200입니다.
public class CashierInputFilter implements InputFilter {
    Pattern mPattern;
    //       
    private static final int MAX_VALUE = 200;
    //       
    private static final int POINTER_LENGTH = 0;
    private static final String POINTER = ".";
    private static final String ZERO = "0";

    public CashierInputFilter() {
        mPattern = Pattern.compile("([0-9]|\\.)*");
    }
    /**
     * @param source        
     * @param start             ,   0
     * @param end               ,   source  -1
     * @param dest            
     * @param dstart        ,   0
     * @param dend          ,   dest  -1
     * @return     
     */
    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        String sourceText = source.toString();
        String destText = dest.toString();
        //       
        if (TextUtils.isEmpty(sourceText)) {
            return "";
        }
        Matcher matcher = mPattern.matcher(source);
        //           ,      
        if (destText.contains(POINTER)) {
            if (!matcher.matches()) {
                return "";
            } else {
                if (POINTER.equals(source)) {  //         
                    return "";
                }
            }
            //       ,          2 
            int index = destText.indexOf(POINTER);
            int length = dend - index;
            if (length > POINTER_LENGTH) {
                return dest.subSequence(dstart, dend);
            }
        } else {
            //           ,          ,           0
            if (!matcher.matches()) {
                return "";
            } else {
                if ((POINTER.equals(source)) && TextUtils.isEmpty(destText)) {
                    return "";
                }
                //     “0”,     “.”
                if (ZERO.equals(destText)) {
                    if (!POINTER.equals(sourceText)) {
                        return "";
                    }
                }
            }
        }
        //         
        double sumText = Double.parseDouble(destText + sourceText);
        if (sumText > MAX_VALUE) {
            ToastUtil.toast("  200 ");
            return dest.subSequence(dstart, dend);
        }
        return dest.subSequence(dstart, dend) + sourceText;
    }
}

좋은 웹페이지 즐겨찾기