用户在EditText中输入数字时格式化数字

时间:2017-03-18 11:33:24

标签: android

我必须格式化数字,因为用户在Edit Text中输入了数字。如果用户输入单个数字,则它应显示为0,0x。如果用户输入两位数,则应显示0,xx。如果是三位数,则为x,xx。如果是四位数,则为xx,xx。如果是五位数,则为xxx,xx。如果是六位数,则为x.xxx,xx。如果是七位数,那么xx.xxx,xx。如果是八位数,那么xxx.xxx,xx。有人可以帮我吗?提前谢谢。

4 个答案:

答案 0 :(得分:0)

您可以使用addTextChangedListener

editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
             // Write your logic here to parse the text
             // and format it in the way you want to.
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

答案 1 :(得分:0)

您可以尝试如下:

<td class="total_price table-default total" >${{$row->price}}
            <span></span></td>
            <td class="qty table-default">
            <input type="number" class="quantity" value="{{$row->no_of_items}}" name="qty" maxlength="3" max="999" min="1" /> &times;${{$row->p_price}}

答案 2 :(得分:0)

您可以通过将输入文件管理器设置为文本字段来实现此目的。

private InputFilter myFilter = new  InputFilter(){

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
       //your code to modify the input text. 
       return modified_input;
    }
};
editText.setFilters(new inputFilterp[]{})

答案 3 :(得分:0)

这是一种可以实现的方法,即

  1. addTextChangedListener或类似的方式监控文字更改。
  2. 当你得到字符串时,相对于0迭代它直到它达到8 数字。

    while (string.length() < 8) {
        string = "0" + string;
    }
    
  3. 带有String.format()的所需格式的模式字符串。

    String.format("%s.%s,%s", string);   // pattern you want
    
  4. 所以这是完整的代码:

     edit.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                text.setText("");
            }
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }
            @Override
            public void afterTextChanged(Editable s) {
                String string = s.toString();
                if (string.length() < 8) {
                    while (string.length() < 8) {
                        string = "0" + string;
                    }
                }               
                text.setText(String.format("%s.%s,%s", string.substring(0, 3), string
                        .substring(3, 6), string.substring(6, 8)));
            }
    });