No meu aplicativo, tenho um EditText em que o usuário tem acesso de leitura e não de gravação.
No código que eu defini android:enabled="false"
.
Embora o fundo do EditText tenha mudado para escuro, quando clico nele, o teclado aparece e posso alterar o texto.
O que devo definir para desativar o EditText?
android
android-edittext
Hesam
fonte
fonte
EditText
, mantendo esta propriedades, basta usarUI.setReadOnly(myEditText, true)
a partir desta biblioteca . Se você deseja replicar esse comportamento sem a biblioteca, verifique o código-fonte desse pequeno método.Respostas:
Eu acredito que o correto seria definir
android:editable="false"
.E se você se pergunta por que meu link aponta para os atributos de
TextView
, você a resposta é porqueEditText
herda deTextView
:Atualização:
conforme mencionado nos comentários abaixo,
editable
foi preterido ( desde o nível 3 da API ). Você deveria estar usandoinputType
(com o valornone
).fonte
editText.setEnabled(false); editText.setInputType(InputType.TYPE_NULL);
android:editable="false" android:focusable="false"
funciona muito bem para mim (Forget About obsoleta, eu acho que o Android: editável não tem nada a ver com android: inputType)use
EditText.setFocusable(false)
para desativar a ediçãoEditText.setFocusableInTouchMode(true)
para ativar a edição;fonte
editText.setEnabled(false);
mudará a cor do texto para cinza. No entanto, os giradores não alteram a cor do texto ao usá-setEnabled
lo, tornando-o uma experiência inconsistente.setFocusable(true)
? veja este link para a diferença entresetFocusable()
esetFocusableInTouchMode()
: stackoverflow.com/questions/23799064/...Você pode tentar o seguinte método:
EditText ativado:
EditText desativado:
Funciona para mim e espero que ajude você.
fonte
editText.setFocusableInTouchMode(true)
vez deeditText.setFocusable(true)
.Use isso para desativar a entrada do usuário
android: editable = "false" Este método está obsoleto.
fonte
Para desativar a edição
EditText
, acho que podemos usarfocusable
OR,enable
masUsando
android:enabled=...
oueditText.setEnabled(...)
Também altera a cor do texto
EditText
para cinza.Quando clicado, não tem efeito
Usando
android:focusable=...
oueditText.setFocusable(false)
-editText.setFocusableInTouchMode(true)
Não muda a cor do texto.
EditText
Quando clicado, destaca a
EditText
linha inferior por alguns milissegundosResultado
fonte
Como
android:editable="false"
é privado. Você pode usar InputType TYPE_NULL em EditTextuse assim:
fonte
Como
android:editable="false"
reprovado emxml
Se você quiser,
java class
também pode usar isso programaticamentefonte
Simplesmente:
fonte
Defina as propriedades abaixo na classe:
Funcionará sem problemas conforme necessário.
fonte
enabled
era suficientePara desativar a funcionalidade de um EditText, basta usar:
caso deseje ativá-lo de alguma forma, você pode usar:
fonte
se você usar
android:editable="false"
, o eclipse lembrará esta mensagem "android: editável está obsoleta: use inputType".Então, eu uso em
android:focusable="false"
vez disso, funcionou bem para mim.fonte
agora está obsoleto e usa
fonte
TYPE_TEXT_VARIATION_PASSWORD
Siga-o para obter mais developer.android.com/reference/android/text/InputTypeUse em
TextView
vez disso.fonte
Desativar = FOCO + CLIQUE + CURSOR
Desativar o foco, clicar e visibilidade do cursor faz o truque para mim.
fonte
Isso tornará seu edittext desativado .
E usando isso
Apenas fará com que o seu Texto de edição não mostre sua softkey, mas se estiver conectado a um teclado físico, permitirá que você digite.
fonte
Eu uso o Google recém-lançado Material Design Library. No meu caso, ele funciona quando eu uso android: focusable = "false" e android: cursorVisible = "false"
fonte
No meu caso, eu precisava
EditText
que rolasse o texto, se não. de linhas excedemaxLines
quando está desativado. Essa implementação funcionou perfeitamente para mim.fonte
Experimente este, funciona bem para mim:
Nota: Você precisa adicionar
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
em sua atividade ou entãokeyboard
irá aparecer na primeira vez.fonte
Como algumas respostas mencionam, se você desativar o editText, ele ficará cinza e se você definir o foco como falso, o cursor será exibido.
Se você gostaria de fazê-lo apenas com xml, isso fez o truque
Simplesmente adiciono um FrameLayout que aparece acima do editText e o defina como focalizável e clicável para que o editText não possa ser clicado.
fonte
Isso funciona para mim:
android: focusable = "false"
fonte
No comentário de @ Asymptote sobre a resposta aceita, use:
... e Bob é seu tio.
fonte
Hoje eu ainda uso
editable="false"
, mas também comfocusable="false"
.Eu acho que o caso em que precisamos tornar um EditText não editável é porque queremos manter seu estilo EditText (com esse sublinhado, com dica, etc), mas ele aceita outras entradas em vez de texto. Por exemplo, uma lista suspensa.
Nesse caso de uso, precisamos ter o
EditText
clicável (portanto,enabled="false"
não é adequado). Definindofocusable="false"
esse truque, no entanto, ainda posso segurar o EditText por muito tempo e colar meu próprio texto nele da área de transferência . Dependendo do seu código e manuseio, isso pode até travar seu aplicativo.Então eu também usei
editable="false"
e agora está tudo ótimo, exceto o aviso.fonte
você pode usar,
android:focusable="false"
mas também precisa desativar o cursor, caso contrário, a função copiar / colar ainda funcionará.então use
fonte
Existem vários foi como alcançar vários níveis de pessoas com deficiência.
editText.setShowSoftInputOnFocus(false);
eeditText.setFocusable
impede que o
EditText
teclado seja exibido em algum texto. Mas o cursor ainda está visível e o usuário pode colar em algum texto.editText.setCursorVisible(false)
oculta o cursor. Não sei por que você gostaria de fazer isso. O usuário pode inserir texto e colar.
editText.setKeyListener(null)
Acho esse caminho mais conveniente. Não há como o usuário pode inserir texto, mas o widget ainda funciona
OnClickListener
se você deseja desencadear uma ação quando o usuário toca nele.editText.setEnabled(false);
desativa completamente
EditText
. É literalmente 'somente leitura', o usuário não pode inserir nenhum texto e (por exemplo)OnClickListener
não trabalha com ele.Documentação do TextEdit
fonte
Defina isso no seu código XML, ele funciona.
android: focusableInTouchMode = "false"
fonte