Alguém pode me dizer como fazer um EditText
não editável via XML? Tentei configurar android:editable
a false
, mas
- está obsoleto; e
- não funcionou.
android
android-edittext
Fran Fitzpatrick
fonte
fonte
EditText
estilo e licença de rolagem, o usoUI.setReadOnly(myEditText, true)
de esta biblioteca . Existem algumas propriedades que precisam ser definidas, que você pode conferir no código-fonte .Respostas:
Use este código simples:
Funciona.
Editar: para adicionar
KeyListener
mais tarde, faça o seguinte1: defina o ouvinte de chave como tag de
textView
2: obtenha o ouvinte de chave da tag e configure-o novamente para
textView
fonte
setFocusable()
porque o documento diz que a implementação padrão pode ser alterada se alterada.Adicione isso ao seu arquivo xml EditText:
Ele fará o mesmo efeito que
android:editable="false"
. Trabalhou para mim, espero que funcione para você também.fonte
TextInputLayout
Deixe seu texto de edição ser
editText.setKeyListener(null);
funcionará, mas simplesmente não está ouvindo as teclas.
O usuário pode ver um cursor no edittext.
Podes tentar
editText.setEnabled(false);
Isso significa que o usuário não pode ver o cursor. Simplesmente dizer que se tornará
TextView
.fonte
Como mencionado em outras respostas, você pode fazer isso,
setEnabled(false)
mas como você está perguntando como configurá-lo via XML, aqui está como fazê-lo.Adicione o seguinte atributo ao seu
EditText
:fonte
enabled
não está obsoleto.editable
é.desativar do XML (uma linha):
reative a partir do Java, se necessário (também uma linha):
fonte
Eles tornaram "editável" obsoleto, mas não forneceram um correspondente correspondente em inputType.
A propósito, inputType = "none" tem algum efeito? Usá-lo ou não, não faz nenhuma diferença, tanto quanto eu vejo.
Por exemplo, o editText padrão é considerado uma linha única. Mas você precisa selecionar um inputType para que seja uma linha única. E se você selecionar "nenhum", ainda será multilinha.
fonte
Essa combinação funcionou para mim:
fonte
Como você mencionou no Android: editável está obsoleto. android: inputType = "none" deve ser usado, mas não funciona devido a um bug ( https://code.google.com/p/android/issues/detail?id=2854 )
Mas você pode conseguir a mesma coisa usando o foco.
Via XML:
Do código:
fonte
se você quiser clicar nele, mas não quiser editá-lo, tente:
fonte
Apenas use
android:enabled="false"
. Isso também dará uma aparência aoEditText
que fará com que não pareça editável.fonte
e use o seguinte:
fonte
Se você quiser fazê-lo em código java, use esta linha para desativá-lo:
E isso para habilitá-lo:
fonte
Eu tentei fazer:
o que deve funcionar, mas para mim não funcionou.
Eu terminei com este código:
o que funciona perfeitamente
fonte
Quando quero que uma atividade não se concentre no EditText e também não mostre o teclado quando clicada, é isso que funcionou para mim.
Adicionando atributos ao layout principal
e depois o campo EditText
Aqui está um exemplo:
fonte
Além de @mahe madi, você pode tentar isso também
Esse método oculta o cursor, perde o foco e, mais importante, define a cor do texto como preto, comportando-se como o TextView.
E para reverter Voltar para o editText, basta fazer isso para obter todas as propriedades do EditText.
Espero que ajude :)
fonte
Você poderia usar,
android:editable="false"
mas eu realmente o aconselharia a usarsetEnabled(false)
, pois fornece uma pista visual para o usuário de que o controle não pode ser editado. A mesma sugestão visual é usada por todos os widgets desativados e a consistência é boa.fonte
O atributo "longClickable" desativa as ações de imprensa longa que fazem com que as opções "Colar" e ou "Selecionar tudo" sejam exibidas como uma dica de ferramenta.
fonte
Eu tentei o seguinte:
mas o problema era que, se o texto de edição é o primeiro no formulário, ele recebe o foco e o código pickCode () que inicia uma nova atividade é chamado imediatamente. Então, modifiquei o código da seguinte maneira e parece funcionar muito bem (exceto que não posso definir o foco na edição do texto, mas não preciso):
Cumprimentos,
Comentários bem-vindos,
John Goche
fonte
Eu uso
EditText.setFocusable(false)
e defino true novamente se quiser editar.fonte
Tente o seguinte:
fonte
Dessa forma, fiz o trabalho para mim, posso selecionar e copiar para a área de transferência, mas não consigo modificar ou colar.
fonte
android: editable está obsoleto, então use inputType .
fonte
Eu enfrentei o mesmo problema, mas após a observação, descobri que
android:editable="false"
só funciona quando inputtype (android:inputType="ANY_VALUE"
) não é fornecido no texto de edição.Remova inputType do EditText e use editable = false, está funcionando bem.
fonte
Eu resolvo isso com uma caixa de diálogo.
fonte
Resposta curta: usei
android:focusable="false"
e funcionou. A escuta de cliques também está funcionando agora.fonte
Experimentar
fonte
Experimente este código. Está funcionando no meu projeto, portanto, funcionará no seu projeto.
fonte