Quero fazer uma EditText
exibição somente leitura . O XML para fazer esse código parece ser android:editable="false"
, mas eu quero fazer isso no código.
Como posso fazer isso?
android
android-edittext
Warna
fonte
fonte
android:editable
foi preteridoEditText
.UI.setReadOnly(myEditText, true)
partir desta biblioteca . Existem algumas propriedades que precisam ser definidas, que você pode conferir no código-fonte .android:inputType="none"
eandroid:textIsSelectable="true"
Respostas:
Por favor, use este código ..
fonte
Se você
setEnabled(false)
, em seguida, o seueditText
iria olhar desativada (cinza, etc). Você pode não querer alterar o aspecto visual do seu editor.Uma maneira menos intrusiva seria usar
setFocusable(false)
.Acredito que isso responda à sua pergunta mais perto da sua intenção inicial.
fonte
setFocusable(false)
(e mesmosetFocusableInTouchMode(false)
comsetClickable(false)
), ainda poderá alterar o valoreditText
pressionando o botãoeditText
por algumas centenas de milissegundos e selecionando aPaste
opção, a menos que a área de transferência do sistema esteja vazia. Eu testei com a mais recente API disponível, com 23 anos .Em
XML
uso:Como um exemplo:
fonte
editable
atributo não parece estar obsoleto (pelo menos, não no nível 23 da API).android:inputType="none"
android:inputType="none"
e os dados ainda são editáveis.Isso funciona para mim:
fonte
O melhor é usar em
TextView
vez disso.fonte
Conforme os documentos, isso impede que o teclado virtual seja exibido. Também evita a colagem, permite a rolagem e não altera o aspecto visual da visualização. No entanto, isso também impede a seleção e a cópia do texto na exibição.
Dos meus testes,
setInputType
a configuraçãoTYPE_NULL
parece ser funcionalmente equivalente à depreciadaandroid:editable="false"
. Além disso,android:inputType="none"
parece não ter efeito perceptível.fonte
android:inputType="none"
, não funciona mais.android: editable = "false" foi preterido. Portanto, você não pode usá-lo para tornar o texto de edição somente leitura.
Eu fiz isso usando a solução abaixo. Aqui eu usei
android: inputType = "none"
android: textIsSelectable = "true"
android: focusable = "false"
Experimente :)
fonte
android:enabled="false"
pode ser uma boa alternativa.Isso fornecerá um filtro EditText não editável. primeiro você precisa colocar o texto que deseja no campo editText e aplicar esse filtro.
fonte
return dst.subSequence(dstart, dend);
escrever essas duas linhas é mais que suficiente para o seu trabalho.
fonte
definido em XML
fonte
Tente usar
fonte
Se definido, especifica que este
TextView
possui um método de entrada. Será um texto, a menos que tenha sido especificado de outra forma. PoisTextView
, isso é falso por padrão. PoisEditText
é verdade por padrão.Deve ser um
boolean
valor,true
oufalse
.Isso também pode ser uma referência a um recurso (no formulário
@[package:]type:name
) ou atributo de tema (no formulário?[package:][type:]name
) que contém um valor desse tipo.Isso corresponde ao símbolo do recurso de atributo global editável.
Métodos relacionados
fonte
Tente substituir o ouvinte onLongClick do texto de edição para remover o menu de contexto:
fonte
Use este código:
Desativar
editText
fornece uma aparência e comportamento somente leitura, mas também mudatext-color
para cinza, portanto é necessário definir a cor do texto.fonte
esta é a minha implementação (um pouco longa, mas útil para mim!): Com esse código, você pode tornar o EditView somente leitura ou Normal. mesmo no estado somente leitura, o texto pode ser copiado pelo usuário. você pode alterar o backgroud para torná-lo diferente de um EditText normal.
o benefício desse código é que, o EditText é exibido como o EditText normal, mas o conteúdo não é alterável. O valor de retorno deve ser mantido como uma variável para que se possa reverter do estado somente leitura para o normal.
para fazer um EditText somente leitura, basta colocá-lo como:
e para torná-lo normal, use tw da declaração anterior:
fonte
Isso funcionou para mim, levando em consideração várias das sugestões acima. Torna o TextEdit focalizável, mas se o usuário clicar ou focar, mostraremos uma lista de seleções em um PopupWindow. (Estamos substituindo o widget maluco do Spinner). TextEdit xml é muito genérico ...
fonte
Se você deseja apenas copiar o texto do controle, mas não pode editá-lo, convém usar um TextView e definir o texto é selecionável .
código:
xml:
A documentação de setTextIsSelectable diz:
No entanto, eu tive que definir explicitamente focusable e focusableInTouchMode como true para fazê-lo funcionar com a entrada por toque.
fonte
Esta foi a única solução simples e completa para mim.
fonte
Não tive problemas para tornar EditTextPreference somente leitura, usando:
Isso funciona bem quando associado ao uso do campo 'resumo' para exibir campos somente leitura (útil para exibir informações da conta, por exemplo). Atualizando os campos de resumo capturados dinamicamente em http://gmariotti.blogspot.com/2013/01/preferenceactivity-preferencefragment.html
fonte
Defina isso no arquivo xml do EdiTextView
fonte
Como
android:editable=""
está obsoleto,Configuração
android:clickable="false"
android:focusable="false"
android:inputType="none"
android:cursorVisible="false"
tornará "somente leitura".
No entanto, os usuários ainda poderão colar no campo ou executar outras ações de clique longo. Para desativar isso, basta substituir onLongClickListener ().
Em Kotlin:
myEditText.setOnLongClickListener { true }
é suficiente.
fonte
Minha abordagem para isso foi criar uma classe TextWatcher personalizada da seguinte maneira:
Em seguida, basta adicionar esse observador a qualquer campo que você queira ler somente apesar de estar ativado:
fonte