Como definir texto sublinhado em um xml
arquivo de layout do Android ?
android
android-layout
fonts
Janusz
fonte
fonte
Respostas:
Isso pode ser alcançado se você estiver usando um arquivo xml de recurso de sequência , que suporta tags HTML como
<b></b>
,<i></i>
e<u></u>
.Se você quiser sublinhar algo do código, use:
fonte
<u>
tags subjacentes não funcionam, por exemplo, às vezes, se você estiver usando uma fonte personalizada. No entanto, subjacente programaticamente porUnderlineSpan
ainda não falhou comigo, então eu recomendaria como a solução mais confiável.Você pode tentar com
fonte
| Paint.ANTI_ALIAS_FLAG
também ou o texto ficará muito nítido. Isso se manifesta em APIs mais baixas com mais frequência do que não.textView.paintFlags = textView.paintFlags or Paint.UNDERLINE_TEXT_FLAG
A resposta "aceita" acima NÃO funciona (quando você tenta usar a string como
textView.setText(Html.fromHtml(String.format(getString(...), ...)))
.Conforme declarado nas documentações, você deve escapar do colchete de abertura (tags codificadas por entidades html) das tags internas com
<
, por exemplo, o resultado deve se parecer com:Em seu código, você pode definir o texto com:
fonte
Conteúdo do arquivo Strings.xml:
O arquivo xml de layout deve usar o recurso de string acima com as propriedades abaixo do textview, conforme mostrado abaixo:
fonte
Para Button e TextView, esta é a maneira mais fácil:
Botão:
Textview:
fonte
Solução de uma linha
myTextView.setText(Html.fromHtml("<p><u>I am Underlined text</u></p>"));
É um pouco tarde, mas pode ser útil para alguém.
fonte
Na função de extensão Kotlin pode ser usada. Isso pode ser usado apenas a partir do código, não do xml.
Uso:
fonte
confira o estilo de botão clicável sublinhado:
strings.xml:
Resultado:
fonte
A abordagem mais recente do desenho de texto sublinhado é descrita por Romain Guy no meio com o código fonte disponível no GitHub . Este aplicativo de exemplo expõe duas implementações possíveis:
fonte
Eu sei que essa é uma resposta tardia, mas eu vim com uma solução que funciona muito bem ... Peguei a resposta de Anthony Forloney por sublinhar o texto no código e criei uma subclasse de TextView que lida com isso para você. Em seguida, você pode usar a subclasse em XML sempre que quiser ter um TextView sublinhado.
Aqui está a classe que eu criei:
Agora ... sempre que você quiser criar uma visualização de texto sublinhada em XML, faça o seguinte:
Adicionei opções adicionais neste snippet XML para mostrar que meu exemplo funciona com a alteração da cor, tamanho e estilo do texto ...
Espero que isto ajude!
fonte
Uma maneira mais limpa, em vez do
textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
método, é usartextView.getPaint().setUnderlineText(true);
E se você precisar desativar posteriormente o sublinhado dessa exibição, como em uma exibição reutilizada em um RecyclerView,
textView.getPaint().setUnderlineText(false);
fonte
Basta usar o atributo no arquivo de recursos da string, por exemplo
fonte
Eu usei esse drawable xml para criar uma borda inferior e apliquei o drawable como plano de fundo ao meu textview
fonte
Uma solução simples e flexível em xml:
fonte
Outra solução é criar uma exibição personalizada que estenda o TextView, como mostrado abaixo
e basta adicionar ao xml como mostrado abaixo
fonte
Simplifiquei a resposta de Samuel :
fonte
Eu criei esse método para facilitar
Sublinhar todo o TextView
Sublinhe uma parte do TextView
verifique minha resposta aqui para tornar o texto sublinhado clicável ou várias partes do TextView
fonte
tente este código
em XML
em código
Boa sorte!
fonte
Além disso, o código a seguir não imprimirá o sublinhado:
Em vez disso, use o seguinte código para manter o formato rich text:
"Você pode usar getString (int) ou getText (int) para recuperar uma string. GetText (int) mantém qualquer estilo de rich text aplicado à string." Documentação do Android.
Consulte a documentação: https://developer.android.com/guide/topics/resources/string-resource.html
Eu espero que isso ajude.
fonte
A resposta mais votada é correta e mais simples. No entanto, às vezes você pode achar que não está funcionando para algumas fontes, mas está funcionando para outras (que problema acabei de encontrar quando lida com chinês).
A solução é não usar "WRAP_CONTENT" apenas para o seu TextView, pois não há espaço extra para desenhar a linha. Você pode definir a altura fixa para o seu TextView ou usar android: paddingVertical com WRAP_CONTENT.
fonte
Observe o símbolo de escape no arquivo xml
fonte
Para fazer isso em Kotlin:
yourTextView.paint?.isUnderlineText = true
fonte
É muito tarde para responder isso, mas suponha que se alguém quiser obter o texto dinamicamente, poderá usar esta linha simples em seu código java que funciona:
fonte
Eu tive um problema em que estou usando uma fonte personalizada e o sublinhado criado com o arquivo de recurso trick (
<u>Underlined text</u>
) funcionou, mas o Android conseguiu transformar o sublinhado em uma espécie de greve.Eu mesmo usei esta resposta para desenhar uma borda abaixo da visualização de texto: https://stackoverflow.com/a/10732993/664449 . Obviamente, isso não funciona para texto parcial sublinhado ou texto multilinhado.
fonte