JavaのAndroidで数値入力の際に整数部と小数部の桁数を制限するためには、InputFilter
クラスを使用することができます。以下に整数部と小数部の桁数を制限する例を示します。
EditText editText = findViewById(R.id.editText);
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(5); // 全体の桁数を制限
editText.setFilters(filters);
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) {
// 小数点以下の桁数を制限
if (s.toString().contains(".")) {
if (s.length() - s.toString().indexOf(".") > 3) {
editText.setText(s.toString().substring(0, s.toString().indexOf(".") + 3));
editText.setSelection(editText.getText().length());
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
上記の例では、editText
という名前のEditTextに対して、InputFilter.LengthFilter(5)
を設定しています。これにより、入力文字列全体の桁数を5桁までに制限しています。
また、addTextChangedListener
メソッドを使用して、テキストが変更された場合に実行される処理を追加しています。この処理では、入力文字列に小数点が含まれている場合に、小数点以下の桁数を2桁までに制限しています。制限を超える場合は、入力文字列を制限内の範囲に修正しています。