Android-控制EditText输入小数点后N位、

2022-02-25  本文已影响0人  晴天ccc

新建工具LengthFilter

public class LengthFilter implements InputFilter {
 private int decimal_length = 0;

 public LengthFilter(int decimal_length) {
     this.decimal_length = decimal_length;
 }

 public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
     if ("".equals(source.toString())) {
         return null;
     }
     String value = dest.toString();
     String[] splitArray = value.split("\\.");
     if (splitArray.length > 1) {
         String dotValue = splitArray[1];
         int diff = dotValue.length() + 1 - decimal_length;
         if (diff > 0) {
             return source.subSequence(start, end - diff);
         }
     }
     return null;
 }
}

layout中设置EditText的输入属性为numberDecimal

    <EditText
        android:id="@+id/inputTF"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="100dp"
        android:background="@color/black"
        android:inputType="numberDecimal"
        tools:ignore="MissingConstraints" />

MainActivity中进行调用

public class MainActivity extends AppCompatActivity {

    private EditText inputTF;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        inputTF = findViewById(R.id.inputTF);
        // 设置EditText保留小数点后N位小数
        inputTF.setFilters(new InputFilter[]{new LengthFilter(6)});

    } 
}
上一篇 下一篇

猜你喜欢

热点阅读