Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编辑文本以输入货币金额_Java_Android_Android Edittext_Textview - Fatal编程技术网

Java 编辑文本以输入货币金额

Java 编辑文本以输入货币金额,java,android,android-edittext,textview,Java,Android,Android Edittext,Textview,我正在开发一个销售点应用程序 所以我想让用户输入购买金额 假设用户输入100000,但我希望它自动显示100000。而1000000变成1000000 第二个问题是,我不希望用户能够自己输入 第三个问题是,由于这是钱,我们不能让用户在开始时输入0 有什么想法吗 到目前为止,我只能提出inputType=numberDecimal,这并没有真正的帮助 多谢各位 p.S.:我不需要任何小数位您可以实现一个或多个小数位,以在您的编辑文本上实施这些约束。可以使用setFilters方法在EditText

我正在开发一个销售点应用程序

所以我想让用户输入购买金额

  • 假设用户输入
    100000
    ,但我希望它自动显示
    100000
    。而
    1000000
    变成
    1000000

  • 第二个问题是,我不希望用户能够自己输入

  • 第三个问题是,由于这是钱,我们不能让用户在开始时输入0

  • 有什么想法吗

    到目前为止,我只能提出
    inputType=numberDecimal
    ,这并没有真正的帮助

    多谢各位


    p.S.:我不需要任何小数位

    您可以实现一个或多个小数位,以在您的
    编辑文本
    上实施这些约束。可以使用
    setFilters
    方法在
    EditText
    上附加多个过滤器


    你也可以用s来实现同样的目标。但是,使用
    InputFilter
    更有意义,因为它允许您在每次更改输入后不必调用
    setText
    方法来更改文本。

    如果您想使用货币,请将
    addTextChangedListener
    添加到所需的编辑文本中,然后监视更改并重新格式化它,下面是示例代码

    private String current = "";
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if(!s.toString().equals(current)){
           [your_edittext].removeTextChangedListener(this);
    
           String cleanString = s.toString().replaceAll("[$,.]", "");
    
           double parsed = Double.parseDouble(cleanString);
           String formatted = NumberFormat.getCurrencyInstance().format((parsed/100));
    
           current = formatted;
           [your_edittext].setText(formatted);
           [your_edittext].setSelection(formatted.length());
    
           [your_edittext].addTextChangedListener(this);
        }
    }
    

    对于您的第一个问题,请点击此链接

    关于你的第二个问题 将此添加到您的编辑文本中

    android:digits="0123456789"
    android:inputType="numberDecimal"
    
    对于第三个问题,你必须像这样使用TextWatcher

    editText1.addTextChangedListener(new TextWatcher(){
        public void onTextChanged(CharSequence s, int start, int before, int count)
        {
            if (editText1.getText().toString().matches("^0") )
            {
                // Not allowed
                Toast.makeText(context, "not allowed", Toast.LENGTH_LONG).show();
                editText1.setText("");
            }
        }
        @Override
        public void afterTextChanged(Editable arg0) { }
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
    }); 
    

    如果用户想要输入10000,则将其设置为100?对于第二个问题,您可以使用edittext XML中的digits关键字为edittext指定数字。对于第三个问题,您可以看到此链接,对于第一个问题,您可以看到此链接,但不幸的是,用户能够在金额前缀中输入0000s,一旦他在编辑文本中有了内容。