gpt4 book ai didi

android - 多次按 "."(在 EditText 中输入时验证 ip 地址)

转载 作者:太空狗 更新时间:2023-10-29 15:29:50 25 4
gpt4 key购买 nike

我有以下 EditText:

 <EditText
android:id="@+id/ip"
android:layout_width="200dip"
android:layout_height="wrap_content"
android:singleLine="true"
android:inputType="numberDecimal">
</EditText>

我想用它来获取IP地址。但它不允许我输入“。” (句号)不止一次,因为输入类型设置为小数位数。关于如何获得多个 '.' 的任何建议同时将 inputType 设置为数字。

最佳答案

您需要创建自己的InputFilter:http://developer.android.com/reference/android/text/InputFilter.html

看看我前段时间写的这个答案:How to set Edittext view allow only two numeric values and two decimal values like ##.##


更新 - 示例代码

这里是对该过滤器的改编以验证 ips。它检查是否存在四位数字,用点分隔,并且没有一个大于 255。验证是实时进行的,即在键入时进行。

    EditText text = new EditText(this);
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end, 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;
}
};
text.setFilters(filters);

关于android - 多次按 "."(在 EditText 中输入时验证 ip 地址),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5798140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com