Como ocultar a barra inferior do EditText (a linha de prompt com pequenas serifas no final)?
Pode haver uma maneira melhor de fazer o que eu quero: eu tenho um layout com um EditText. Normalmente, isso é exibido bem onde o usuário pode tocar nele e começar a inserir ou editar o texto.
Às vezes, porém, eu gostaria de usar o mesmo layout (simplifica outra lógica) para exibir os mesmos dados de maneira somente leitura. Quero que a apresentação seja semelhante - ela deve ter a mesma altura e a mesma fonte, mas não a barra inferior.
Como uma medida de intervalo, vou implementar isso removendo o EditText e substituindo um TextView. Eu acho que isso dará os resultados desejados, mas parece uma maneira indireta de fazer algo que deve ser fácil, alterando os atributos.
fonte
Respostas:
Você pode definir
EditText
um drawable transparente personalizado ou apenas usarou
ou programaticamente
fonte
android:background="@android:color/transparent"
android:background="@android:color/transparent"
causa o mesmo problema de perda de margens ... Existe algum exemplo de alguém criando um drawable personalizado?Defina o plano de fundo como nulo.
fonte
android:background="@android:color/transparent
porque@null
é assustador.@null
assustador?Você pode definir
EditText
obackgroundTint
valor de uma cor específica. Se você definir cores transparentes, a barra inferior deverá desaparecer.android:backgroundTint="@color/Transparent"
<color name="Transparent">#00000000</color>
Mas você pode usar isso em
Api v21(Lollipop)
ou superiorfonte
Defina seu plano de fundo do edittext como
android:background="#00000000"
Vai funcionar.
fonte
Você pode fazer isso programaticamente usando
setBackgroundResource
:fonte
O que fiz foi criar um drawable Shape e defini-lo como plano de fundo:
Nota: Eu realmente utilizados
@dimen
e@color
os valores para os firelds, mas eu simplificou o arquivo de forma aqui para maior clareza.fonte
Usando qualquer propriedade:
OU
trabalhou para eu esconder o sublinhado do EditText.
No entanto, observe que isso causa um problema de espaçamento com o TextInputLayout que envolvi o
EditText
fonte
Aqui está uma maneira de escondê-lo, sem arruinar o preenchimento padrão:
uso:
Atualizar:
Se você estiver sempre passando nulo, poderá codificá-lo no método (e poderá sobrecarregar o próprio EditText)
fonte
Você também deve definir uma minWidth, caso contrário, o cursor desaparecerá se o texto estiver vazio.
fonte
No meu caso, eu estava usando o plano de fundo personalizado para editar o texto, portanto, definir o plano de fundo como @ nulo ou definir o tom como transparente não era a solução para mim, então joguei um pequeno truque que funcionou muito bem para mim.
e faz o trabalho muito bem .. não é a solução ideal, mas funciona
fonte
Eu tenho algo parecido com isto que é muito, muito útil:
onde generalEditText é meu EditText e a cor branca é:
Isso não removerá o preenchimento e o EditText permanecerá como está. Somente a linha na parte inferior será removida. Às vezes é mais útil fazer assim.
Se você usar
android:background="@null"
o máximo de sugestões, você perde o preenchimento e o EditText fica menor. Pelo menos, foi o meu caso.Uma pequena observação: se você definir o fundo como nulo e tentar o código java que forneci acima, seu aplicativo falhará imediatamente após executá-lo. (porque obtém o plano de fundo, mas é nulo.) Pode ser óbvio, mas acho importante salientar.
fonte
Eu descobri a coisa mais curiosa! Se você configurá-lo para
null
usar Ligação de Dados:android:background="@{null}"
Além disso, o fundo não é removido, mas a exibição ainda possui o preenchimento calculado a partir do fundo padrão. Portanto, por algum motivo, a configuração nula adiada não limpa o preenchimento da página anterior ..? O preenchimento na exibição é esquerdo / superior / direito 4dp, 13dp inferior (do nível 21 do emulador).
Pode não ter o mesmo resultado final em todos os níveis da API, então cuidado! Alguém me diga se você testar isso e achar confiável. (Observe também que esse preenchimento inferior se destaca por causa do sublinhado que estava no original. Portanto, você provavelmente desejará alterá-lo no XML ou redefini-lo no código depois de carregado para igual ao topo ...
fonte
se o seu texto de edição já tiver um plano de fundo, você poderá usar os seguintes.
fonte
Se você deseja que isso afete todas as instâncias do EditText e qualquer classe que herda dele, defina em seu tema o valor do atributo, editTextBackground.
Um exemplo do drawable que eu uso é:
Esta é uma versão ligeiramente modificada da implementação padrão do design do material.
Quando aplicado, todo o EditText remove o sublinhado do aplicativo, e você não precisa aplicar o estilo manualmente a todos.
fonte
Simplesmente use isto
fonte
Você também pode definir um ESTILO para o seu editText para poder reagrupar todas as propriedades em comum. É muito poderoso se você precisar editar vários textos que precisam ter o comportamento
Coloque o código em res / values / styles.xml
Depois disso, você só precisa chamá-lo em seu editText
fonte
Programaticamente usar:
editText.setBackground(null)
De
xml
uso:android:background="@null"
fonte
Ou
fonte
android: inputType = "textVisiblePassword | textMultiLine" android: background = "@ android: color / transparent"
... não é a solução ideal, mas funciona.
fonte
Definir plano de fundo como nulo
fonte
No meu caso,
editText.setBackgroundResource(R.color.transparent);
é melhor.Não remove o preenchimento padrão, logo abaixo da barra.
R.color.transparent = #00000000
fonte
se você estiver usando plano de fundo, deverá usar esta tag
fonte
Para manter as margens e a cor do plano de fundo, use:
background.xml
Editar texto:
fonte