这是我的 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/