Eu sei que isso é tão fácil (doh ...), mas estou procurando uma maneira de executar um método tocando ou clicando em uma linha de texto TextView em um aplicativo Android.
Continuo pensando nos ouvintes de botão e nas chamadas de ouvintes de métodos anônimos, mas isso parece não se aplicar ao TextView.
Alguém pode me indicar algum trecho de código para mostrar como clicar ou tocar em um pedaço de texto em um TextView executa um método?
TextView
- link.medium.com/TLq6s8ltc3Respostas:
Você pode definir o manipulador de cliques no xml com estes atributos:
Não se esqueça do atributo clicável, sem ele, o manipulador de cliques não é chamado.
main.xml
MyActivity.java
fonte
setOnClickListener
define oclickable
atributo, mas o usoonClick
aparentemente não o faz.onClick
que define oclickable
atributo no Android 5.0 Lollipop (API 21). Talvez eles tenham considerado um bug que isso não aconteceu em versões mais antigas?Pode não ser exatamente o que você está procurando, mas é o que funcionou para o que estou fazendo. Tudo isso é depois do meu
onCreate
:fonte
OK, eu respondi minha própria pergunta (mas é a melhor maneira?)
Veja como executar um método quando você clica ou toca em algum texto em um TextView:
e meu main.xml é:
fonte
de dentro de uma atividade que chama um layout e uma visualização de texto, esse ouvinte de clique funciona:
a visualização de texto é declarada assim (assistente padrão):
e no arquivo strings.xml
fonte
Embora você possa resolver o problema configurando o ouvinte como textview, é recomendável não. Você deve usar o botão simples , pois é uma subclasse de Button e fornece muitos atributos que o TextView não fornece.
Para usar o botão simples, adicione o
style="?android:attr/borderlessButtonStyle"
atributo -fonte
em textView
Você também deve implementar View.OnClickListener e o método On Click pode usar intent
Eu testei esta solução funciona bem.
fonte
Para clicar em uma parte do texto (não no todo
TextView
), você pode usarHtml
ouLinkify
(ambos, criar links que abrem URLs, mas não um retorno de chamada no aplicativo).Linkify
Use um recurso de string como:
Em seguida, em uma visualização de texto:
Html
Usando
Html.fromHtml
:Então, na sua visualização de texto:
fonte
Você pode usar o TextWatcher for TextView, é mais flexível que o ClickLinstener (não é o melhor ou o pior, apenas mais uma maneira).
fonte