Eu criei um layout que contém dois botões, Próximo e Anterior. Entre os botões, estou gerando algumas visualizações dinâmicas. Então, quando inicio o aplicativo, desejo desativar o botão "Anterior", pois não haverá visualizações anteriores. Também quero desativar o botão "Avançar" quando não houver mais visualizações para exibir. Existe alguma maneira de desativar os botões?
371
Você não pode habilitá-lo ou desabilitá-lo em seu XML (já que seu layout está definido em tempo de execução), mas é possível definir se é clicável no início da atividade com
android:clickable
.fonte
Você acabou de escrever uma única linha de código em sua atividade
Quando você deseja ativar o mesmo botão, basta escrever
fonte
((Button)findViewById(R.id.mybutton)).setEnabled(false);
Sim, ele pode ser desativado no XML usando apenas:
fonte
android:enabled
quando você começa a digitar. (Mesmo para este dia.)setEnabled
está trabalhandoEm Java, depois de ter a referência do botão:
Para ativar / desativar o botão, você pode usar:
Ou:
Como você deseja desativar o botão desde o início, você pode usar o button.setEnabled (false); no método onCreate. Caso contrário, no XML, você pode usar diretamente:
Assim:
fonte
No meu caso,
está funcionando bem e está ativando e desativando o botão como deveria. Porém, quando o estado do botão é desativado, ele nunca volta ao estado ativado, embora seja clicável. Tentei invalidar e atualizar o estado do drawable, mas sem sorte.
Se você ou alguém com um problema semelhante, o que funciona para mim é definir o plano de fundo novamente. Funciona em qualquer nível da API.
fonte
No Kotlin, se você consultar a Visualização de botão com id, ative / desative o botão como
layout.xml
activity.kt
fonte
primeiro no xml faça o botão como
android:clickable="false"
em seu código, dentro do
oncreate()
método, defina a propriedade button comodepois, dentro do botão, clique em alterar o código para
fonte
MANEIRA ERRADA EM OUVIR USAR VARIÁVEIS EM VEZ DO PARÂMETRO !!!
MANEIRA CERTA:
EDIT: Em resposta a @ jeroen-bollen
quando a visualização é clicada, o objeto da classe View retorna para o método onClick () enviando como o próprio parâmetro, portanto, o parâmetro nulo da visualização não deve ocorrer se ocorrer um erro de declaração . exemplo coletado pelo GC) ou método foi adulterado devido a invasão
pouco sobre instanceof & null
três palavras do autor
SE VOCÊ PERGUNTAR POR QUE?
PARA EVITAR NullPointerException
Um pouco mais de código economizará seu tempo no rastreamento posterior de erros no seu código e reduzirá a ocorrência de anomalias.
considere o seguinte exemplo:
fonte
v
não é umButton
.Com Kotlin você pode fazer,
fonte