Resposta curta
Use o padrão WEB_URL na classe de padrões
Patterns.WEB_URL.matcher(potentialUrl).matches()
Ele retornará True se o URL for válido e falso se o URL for inválido .
Resposta longa
A partir da API Android nível 8, há um padrão WEB_URL . Citando a fonte, "corresponde à maior parte do RFC 3987". Se você visar um nível de API inferior, poderá simplesmente copiar o padrão da origem e incluí-lo em seu aplicativo. Presumo que você saiba como usar padrões e correspondências, então não entrarei em mais detalhes aqui.
Além disso, a classe URLUtil fornece alguns métodos úteis, por exemplo:
As descrições dos métodos não são muito elaboradas, portanto, provavelmente é melhor você olhar a fonte e descobrir qual deles se encaixa melhor no seu propósito.
Quanto a quando acionar a verificação de validação, existem várias possibilidades: você pode usar as funções de retorno de chamada EditText
ou use um TextWatcher , que acho que seria melhor.
NÃO USE URLUtil para validar o URL conforme abaixo.
URLUtil.isValidUrl(url)
porque fornece strings como "http: //" como URL válido que não é verdadeiro