Eu tenho um objeto em que o texto alterna e exibe mensagens de status. Quando as mensagens mudam, desejo que o evento click do objeto seja alterado para levá-lo à atividade à qual a mensagem está relacionada.
Então, eu tenho um TextView mTitleView
e estou atribuindo o evento assim.
public void setOnTitleClickListener(OnClickListener listener) {
mTitleView.setOnClickListener(listener);
}
Como faço para remover esse evento de clique? Existem algumas mensagens de status que não têm uma área acionável, então eu gostaria de desativar o evento de clique. Também gostaria de poder percorrer esses eventos de clique e descartá-los adequadamente, mas não tenho certeza das melhores práticas.
a better design
está implicando implicações no desempenho ou está apenas dizendo que é um pouco desagradável?Observe que, se uma visualização não for clicável (um TextView, por exemplo), a configuração
setOnClickListener(null)
significará que a visualização é clicável. UsemMyView.setClickable(false)
se você não quiser que sua visualização seja clicável. Por exemplo, se você usar um extraível xml para o plano de fundo, que mostra cores diferentes para estados diferentes, se a visualização ainda for clicável, os usuários poderão clicar nele e a cor diferente do plano de fundo será exibida, o que pode parecer estranho.fonte
Talvez
setOnClickListener(null)
?fonte
Configuração
setOnClickListener(null)
é uma boa idéia para remover o ouvinte de clique em tempo de execução.E também alguém comentou que ligar
View.hasOnClickListeners()
depois disso retornarátrue
, NÃO meu amigo.Aqui está a implementação de
hasOnClickListeners()
tirada daandroid.view.View
classeGraças a Deus. Ele verifica se há
null
.Então, tudo está seguro. Aproveitar :-)
fonte
As respostas acima parecem instáveis e não confiáveis. Tentei fazer isso com um ImageView em um layout relativo simples e ele não desativou o evento onClick.
O que funcionou para mim foi usar o setEnabled.
Você pode então verificar se a Visualização está ativada com:
Outra opção é usar setContentDescription (String string) e String getContentDescription () para determinar o status de uma exibição.
fonte
Basta colocar, funcionou para mim
fonte
fonte
Apenas reinicializar o item como abaixo faria o truque. Ele removeria onclick, onlonglick, onitemclick, onitemlongclick com base no item
mTitleView = findViewById (R.id.mTitleView);
fonte