Eu tenho o seguinte TextView definido:
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/txtCredits"
android:autoLink="web" android:id="@+id/infoTxtCredits"
android:layout_centerInParent="true"
android:linksClickable="true"></TextView>
onde @string/txtCredits
é um recurso de cadeia que contém <a href="some site">Link text</a>
.
O Android está destacando os links no TextView, mas eles não respondem a cliques. Alguém pode me dizer o que estou fazendo de errado? Preciso definir um onClickListener para o TextView na minha atividade para algo tão simples quanto isso?
Parece que tem a ver com a maneira como eu defino meu recurso de string. Isso não funciona:
<string name="txtCredits"><a href="http://www.google.com">Google</a></string>
Mas isso faz:
<string name="txtCredits">www.google.com</string>
O que é uma chatice, porque eu prefiro mostrar um link de texto do que mostrar o URL completo.
android:focusable="true"
resolveu o meu problemaRespostas:
Enterrado nas demos da API, encontrei a solução para o meu problema:
Link.java:
Eu removi a maioria dos atributos no meu TextView para corresponder ao que estava na demonstração.
Isso resolveu. Muito difícil de descobrir e consertar.
Importante : Não se esqueça de remover
autoLink="web"
se estiver ligandosetMovementMethod()
.fonte
Estou usando apenas
android:autoLink="web"
e funciona bem. Um clique no link abre o navegador e mostra a página correta.Uma coisa que eu poderia adivinhar é que alguma outra visão está acima do link. Algo transparente preenche todo o pai, mas não exibe nada acima do link. Nesse caso, o clique acessa essa visualização em vez do link.
fonte
Depois de passar algum tempo com isso, descobri que:
android:autoLink="web"
funciona se você tiver links completos no seu HTML. O seguinte será destacado em azul e clicável:view.setMovementMethod(LinkMovementMethod.getInstance());
funcionará com o seguinte (será destacado e clicável):Observe que a terceira opção possui um hiperlink, mas a descrição do link (a parte entre as tags) em si não é um link.
android:autoLink="web"
se não trabalhar com tais ligações.android:autoLink="web"
se definido em XML será substituídoview.setMovementMethod(LinkMovementMethod.getInstance());
(ou seja, links do terceiro tipo serão destacados, mas não clicáveis).A moral da história é usada
view.setMovementMethod(LinkMovementMethod.getInstance());
no seu código e verifique se você não temandroid:autoLink="web"
no layout XML se quiser que todos os links sejam clicáveis.fonte
<a href="http://www.google.com">Go to Google</a>
não funcionará no autoLink. Para tantas respostas no SO, este é o único que o mencionou. Obrigado!As soluções acima não funcionaram para mim, mas o seguinte funcionou (e parece um pouco mais limpo).
Primeiro, no recurso de string, defina suas divisões de abertura de tag usando a codificação de entidade HTML, ou seja:
e não:
Em geral, codifique todas as divisas na string dessa maneira. BTW, o link deve começar com
http://
Em seguida (conforme sugerido aqui ), defina esta opção no seu TextView:
Finalmente, no código, faça:
É isso, sem regexes ou outros hacks manuais necessários.
fonte
%20
<![CDATA[ ... ]]>
tag.<![CDATA[...]]>
tag.eu usei isso simplesmente
torna os links clicáveis dados aqui
fonte
<a href...
clickableSe você deseja adicionar um link semelhante ao HTML, tudo que você precisa fazer é:
adicione uma string semelhante a HTML de recurso:
adicione sua visualização ao layout sem nenhuma configuração específica de link:
adicione MovementMethod apropriado programaticamente ao seu TextView:
É isso aí! E sim, ter opções como "autoLink" e "linksClickable" trabalhando apenas em links explícitos (não agrupados em tags html) também é muito enganador para mim ...
fonte
Adicionei esta linha ao
TextView
:android:autoLink="web"
Abaixo está um exemplo de uso em um arquivo de layout.
layout.xml
amostrastring.xml
fonte
O seguinte deve funcionar para quem procura uma combinação de texto e hiperlink em um aplicativo Android.
Em
string.xml
:Agora você pode utilizá-lo
string
de qualquer formaView
como esta:Agora, na sua Atividade ou Fragmento, faça o seguinte:
Até agora, você não precisa definir
android:autoLink="web"
ouandroid:linksClickable="true"
usar essa abordagem.Espero que você ache isso útil.
fonte
Eu espero que isso te ajude;
fonte
android:autoLink=?
do seuTextView
.android:autoLink=?
é importante!Apenas o que você precisa adicionar na exibição de texto em xml
fonte
A coisa mais fácil que funcionou para mim é usar o Linkify
e ele detectará automaticamente os URLs da Web do texto na visualização de texto.
fonte
Richard, da próxima vez, você deve adicionar esse código em TextView no XML do layout.
Isso deve ser assim.
Você não precisa usar esse código (
t2.setMovementMethod(LinkMovementMethod.getInstance());
) para tornar o link clicável.Além disso, eis a verdade: desde que você defina o autoLink e o linksClickable , não se esqueça de adicioná-lo no arquivo String.xml para que o link clicável funcione.
fonte
usando o linkify : o Linkify pega um pedaço de texto e uma expressão regular e transforma todas as correspondências de expressão regular no texto em links clicáveis
Não esqueça de
fonte
Aqui está um código android de uma linha para tornar o telefone e o URL selecionáveis no textView, independentemente do que é string e do que são dados. Você não precisa usar nenhuma tag HTML para isso.
fonte
Notei que usando
android:autoLink="web"
assimfuncionou bem para URLs, mas como eu tinha um endereço de e-mail e um número de telefone que também queria vincular, acabei usando esta linha
android:autoLink="all"
como estae funcionou perfeitamente.
fonte
Gerenciar Linkify texto em cores também
fonte
Certifique-se de não usar
setAutoLinkMask(Linkify.ALL)
ao usarsetMovementMethod(LinkMovementMethod.getInstance())
eHtml.fromHTML()
emHTML
links formatados corretamente (por exemplo,<a href="http://www.google.com/">Google</a>
).fonte
Usa isto...
e adicione permissão no arquivo de manifesto
fonte
Você precisa apenas disso:
Insira esta linha no TextView, que pode ser clicável com referência à Web. Endereço de URL definido como um texto deste TextView.
Exemplo:
fonte
A resposta aceita está correta, MAS significa que números de telefone, mapas, endereços de email e links regulares, por exemplo,
http://google.com
sem tags href, NÃO serão mais clicáveis, pois você não pode ter um vínculo automático no xml.A única solução completa para ter TUDO clicável que eu encontrei é o seguinte:
E o TextView NÃO deve ter
android:autolink
. Também não há necessidadeandroid:linksClickable="true"
; é verdade por padrão.fonte
myapp://
esquemas (para Deep Linking).Foi assim que resolvi links clicáveis e visíveis em um TextView (por código)
fonte
Use o código abaixo:
fonte
[Tested in Pre-lollipop as well as in Lollipop and above]
Você pode obter sua string HTML no back-end ou nos arquivos de recursos. Se você colocar o texto como uma sequência de recursos, adicione a
CDATA
tag:Em seguida, no código, você precisa obter a string e atribuí-la como HTML e definir um método de movimento de link:
fonte
O motivo pelo qual você está tendo o problema é que ele apenas tenta corresponder endereços "nus". coisas como "www.google.com" ou " http://www.google.com ".
A execução de seu texto através de Html.fromHtml () deve ser suficiente . Você precisa fazer isso programaticamente, mas funciona.
fonte
Não sei se vale a pena adicionar outra resposta, mas por precaução ...
Eu tive que caçar isso em alguns lugares, mas finalmente consegui que esta versão do código funcionasse.
strings.xml:
myactivity.xml:
myactivty.java (em onCreate ()):
Isso criará dois hiperlinks clicáveis com o texto
link text1
elink text2
redirecionará o usuário para o google.fonte
O telefone Autolink não funciona para mim. O seguinte funcionou como um encanto,
fonte
Se você estiver usando o TextView baseado em XML, para sua exigência, precisará fazer apenas duas coisas:
Identifique seu link na string, como "esta é minha página da Web". Você pode adicioná-lo em xml ou no código.
No xml que possui o TextView, adicione estes:
fonte
Adicione CDATA ao seu recurso de sequência
Strings.xml
fonte
Eu uso o link automático para "sublinhar automaticamente" o texto, mas acabei de criar um "onClick" que o gerencia. (Eu me deparei com esse problema)
Não requer nenhuma permissão, pois você está passando a intenção para aplicativos que gerenciam esses recursos (navegador do IE).
Foi isso que funcionou para mim. Boa sorte.
fonte
Só perdi tanto tempo para descobrir que você precisa usar getText (R.string.whatever) em vez de getString (R.string.whatever) ...
Enfim, aqui está como eu consegui o meu trabalho. Com vários hiperlinks na mesma exibição de texto também.
exemplo de string
fonte