EditText всегда показывает числа с двумя десятичными знаками

Я хотел бы всегда отображать ввод полей EditText с двумя десятичными знаками. Поэтому, когда пользователь вводит 5, отображается 5,00, а когда пользователь вводит 7,5 - 7,50.

Кроме того, я хотел бы также показывать ноль, когда поле пустое, а не ничего.

Что у меня есть. уже установлен тип ввода:

android:inputType="number|numberDecimal"/>

Должен ли я здесь работать с фильтрами ввода?

Извините, я все еще новичок в android / java ...

Спасибо за вашу помощь!

Редактировать 2011-07-09 23.35 - Решенная часть 1 из 2: "" до 0,00.

С ответом nickfox я смог решить половину своего вопроса.

    et.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {}
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if(s.toString().matches(""))
            {
                et.setText("0.00");
                Selection.setSelection(et.getText(), 0, 4);
            } 
        }
    });

Я все еще работаю над решением для другой половины моего вопроса. Если я найду решение, я опубликую его здесь.

Edit 2011-07-09 23.35 - Решенная часть 2 из 2: изменить ввод пользователя на число с двумя десятичными знаками.

OnFocusChangeListener FocusChanged = new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if(!hasFocus){
            String userInput = et.getText().toString();

            int dotPos = -1;    

            for (int i = 0; i < userInput.length(); i++) {
                char c = userInput.charAt(i);
                if (c == '.') {
                    dotPos = i;
                }
            }

            if (dotPos == -1){
                et.setText(userInput + ".00");
            } else {
                if ( userInput.length() - dotPos == 1 ) {
                    et.setText(userInput + "00");
                } else if ( userInput.length() - dotPos == 2 ) {
                    et.setText(userInput + "0");
                }
            }
        }
    }
12
задан patrick 10 July 2011 в 11:40
поделиться