【问题标题】:Android - Button disabled until a valid URL is entered in edittextAndroid - 在edittext中输入有效URL之前禁用按钮
【发布时间】:2011-12-14 08:25:02
【问题描述】:

我正在尝试创建一个屏幕,其中包含一个需要输入 url 的 EditText 和一个 Verify 按钮,当输入有效的 url 时该按钮将突出显示。

我想知道判断输入的网址是否有效的逻辑是什么?我应该在编辑文本中查找.com 字符串还是有其他逻辑?以及如何在用户输入字符时获取文本,以便在输入有效网址后立即突出显示按钮。

提前致谢。

【问题讨论】:

    标签: android url button


    【解决方案1】:

    试试这个:

    UrlValidator validator = new UrlValidator();
    validator.validate(url);
    

    我认为validator.validate 是一个布尔值,但我不确定...

    这样你就可以调用按钮的setVisible(true/false)

    【讨论】:

    • UrlValidator 属于 Apache 的 Commons Validator 包,Android 默认不包含该包。
    • 很高兴了解 UrlValidator。感谢您的回复。不过,Cristian 的回应更为完整。
    【解决方案2】:
    1. 网址验证:Regular expression to match URLs in Java
    2. 如何在用户输入有效 URL 时启用按钮:

    让我们猜猜你的EditTexttxt_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()));
        }
    });
    

    【讨论】:

      【解决方案3】:

      您可以尝试创建一个 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
                  }
              }
          });
      

      【讨论】:

      • 这也会验证像localhost 这样的 URL,这对于某些应用程序可能不是有效。不过很好……我喜欢。
      猜你喜欢
      • 2015-11-05
      • 2023-01-03
      • 2021-05-22
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多