android - 如何使 EditText 仅接受 IP 地址作为输入?

标签 android

这是我的 EditText,我想让它只接受一个 IP 地址。我使用 numberDecimal 作为 inputType,但它不接受超过一个点。

<EditText
                android:id="@+id/etBannedIpAddress"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:hint="IP Address"
                android:inputType="numberDecimal"
                android:textAppearance="@android:style/TextAppearance.Small"
                android:textColor="@color/blue_text" />

最佳答案

试试这样: 通过使用输入过滤器,我们可以在仅输入值之前过滤数据。

InputFilter[] filters = new InputFilter[1];
        filters[0] = new InputFilter() {
            @Override
            public CharSequence filter(CharSequence source, int start, int end,
                    android.text.Spanned dest, int dstart, int dend) {
                if (end > start) {
                    String destTxt = dest.toString();
                    String resultingTxt = destTxt.substring(0, dstart)
                            + source.subSequence(start, end)
                            + destTxt.substring(dend);
                    if (!resultingTxt
                            .matches("^\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) {
                        return "";
                    } else {
                        String[] splits = resultingTxt.split("\\.");
                        for (int i = 0; i < splits.length; i++) {
                            if (Integer.valueOf(splits[i]) > 255) {
                                return "";
                            }
                        }
                    }
                }
                return null;
            }

        };
        editTxxt.setFilters(filters);

关于android - 如何使 EditText 仅接受 IP 地址作为输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28514942/

相关文章:

android - 如何使用 Loader 更新单个 TextView

java - Crosswalk - 如何在 XWalkExtension 类中获取 Android 应用程序上下文?

android - 在 Android Activity 中滑动面板

android - com.android.volley.ParseError : org. json.JSONException

android - 选择图库中的图像时应用程序崩溃

android - API 请求被 burp 套件拦截

c# - 如何在 Unity 中获取设备的网关?

android - 使用弹出窗口在 Android 键盘中实现表情符号

android - cordova.plugins 给出未定义

android - 如何禁用 Firebase 应用分发的电子邮件通知