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)});
}
}