【发布时间】:2011-12-14 08:25:02
【问题描述】:
我正在尝试创建一个屏幕,其中包含一个需要输入 url 的 EditText 和一个 Verify 按钮,当输入有效的 url 时该按钮将突出显示。
我想知道判断输入的网址是否有效的逻辑是什么?我应该在编辑文本中查找.com 字符串还是有其他逻辑?以及如何在用户输入字符时获取文本,以便在输入有效网址后立即突出显示按钮。
提前致谢。
【问题讨论】:
我正在尝试创建一个屏幕,其中包含一个需要输入 url 的 EditText 和一个 Verify 按钮,当输入有效的 url 时该按钮将突出显示。
我想知道判断输入的网址是否有效的逻辑是什么?我应该在编辑文本中查找.com 字符串还是有其他逻辑?以及如何在用户输入字符时获取文本,以便在输入有效网址后立即突出显示按钮。
提前致谢。
【问题讨论】:
试试这个:
UrlValidator validator = new UrlValidator();
validator.validate(url);
我认为validator.validate 是一个布尔值,但我不确定...
这样你就可以调用按钮的setVisible(true/false)。
【讨论】:
UrlValidator 属于 Apache 的 Commons Validator 包,Android 默认不包含该包。
让我们猜猜你的EditText 有txt_url id:
EditText editText = (EditText) findViewById(R.id.txt_url);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
// lets supouse validation method is called validUrl()
button.setEnabled(validUrl(editable.toString()));
}
});
【讨论】:
您可以尝试创建一个 URL 对象并捕获 MalformedURLException,如下所示:
editText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
try {
URL url = new URL(String.valueOf(s));
// code to show verify button here
} catch (MalformedURLException e) {
// show not verified here
}
}
});
【讨论】: