You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发中如何检测EditText输入 仅允许输入数字禁止其他字符

Android EditText仅允许输入数字的实现方法

方案1:XML布局静态配置(首选,实现最简单)

直接在布局文件R.layout.activity_percent_input的EditText控件节点中添加以下属性即可:

<EditText
    android:id="@+id/inputCorrect"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    <!-- 仅允许输入整数数字 -->
    android:inputType="number"
    <!-- 可选:精确指定允许输入的字符,彻底屏蔽其他字符 -->
    android:digits="0123456789"
    <!-- 若需要允许输入小数,把inputType改成如下即可 -->
    <!-- android:inputType="numberDecimal" -->
    <!-- 若需要允许正负号,加numberSigned后缀 -->
    <!-- android:inputType="number|numberSigned" -->
/>

这种方式系统会自动限制输入法只弹出数字键盘,且无法输入非指定字符,适配绝大多数场景。


方案2:代码动态设置(适用于需要运行时切换输入规则的场景)

注意你原代码存在错误:findViewById必须在setContentView之后调用,否则会触发空指针异常,修正后的完整代码如下:

public class percentInputActivity extends AppCompatActivity {
    EditText correctInputText;
    Button calButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_percent_input);
        // 初始化控件必须放在setContentView之后
        correctInputText = findViewById(R.id.inputCorrect);
        calButton = findViewById(R.id.calButton);

        // 方式1:直接设置输入类型
        correctInputText.setInputType(InputType.TYPE_CLASS_NUMBER);
        // 允许小数的话用这个
        // correctInputText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);

        // 方式2:用InputFilter做更严格的自定义限制,比如同时限制输入长度和字符范围
        InputFilter numberFilter = (source, start, end, dest, dstart, dend) -> {
            for (int i = start; i < end; i++) {
                if (!Character.isDigit(source.charAt(i))) {
                    return "";
                }
            }
            return null;
        };
        // 同时限制最多输入5位数字
        correctInputText.setFilters(new InputFilter[]{numberFilter, new InputFilter.LengthFilter(5)});
    }
}

内容的提问来源于stack exchange,提问作者Farzad Moradkhani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:09:03