java Android inputfilterを使って数値入力する際の整数部と小数部それぞれの桁数内の入力のみ許す処理

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桁までに制限しています。制限を超える場合は、入力文字列を制限内の範囲に修正しています。

タイトルとURLをコピーしました