繁体   English   中英

如何将EditText默认设置为整数但允许十进制输入?

[英]How to default an EditText to integer but allow decimal input?

我正在使用EditText允许用户输入存储在Double中的值。

但是,默认情况下,双打看起来像“ 0.0”,如果用户不使用多余的小数,则退格会有点烦人。 有没有一种方法可以强制将整数显示为“ 0”,并且仅在用户实际决定使用时才显示小数?

当前代码:

        myEditText = (EditText) view.findViewById(R.id.my_edittext);
        myEditText.setText(myVariable + "");
        myEditText.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) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                String temp = s.toString();
                if (s.length() > 0){
                    if (OtherMethods.isDouble(temp)) {
                        myVariable = Double.parseDouble(temp);
                    }
                    else {
                        myVariable = 0.0;
                    }
                }
                else {
                    myVariable = 0.0;
                }
            }
        });

XML:

<EditText
    android:id="@+id/my_edittext"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"
    android:ems="10"
    android:hint="Input Value"
    android:imeOptions="actionDone"/>
  1. 将Double解析为String,然后将String解析为Int:

     String stringparsed = YourDouble + ""; int intparsed = Integer.parseInt(stringparsed); 
  2. 使用子字符串将字符串从startIndex剪切为finalIndex:

     String stringparsed = YourDouble + ""; String final = stringparsed.substring(0,1); //for example, if the double was 0.0, the result is 0 

为此,您可以使用NumberFormat

    EditText yourEditText = (EditText) findViewById(R.id.editTextID);
    //dummy data, will have user's value
    double aDouble = 4.0;

    //formats to show decimal
    NumberFormat formatter = new DecimalFormat("#0");

    //this will show "4"
    yourEditText.setText(formatter.format(aDouble));

确保验证用户的输入。 同样,这只会修改显示的内容,而不会修改值本身。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM