Várias formatações no mesmo TextView

Não é muito comum, porém possível de ser visto em alguns aplicativos o uso de várias formatações em um mesmo texto. Em uma news headline de uma aplicativo de notícias pode ser visto a aplicação do formato Itálico em uma palavra ou uma cor de fundo que também é aplicado a apenas uma palavra para que ela seja destacada. Ou mesmo no popular aplicativo do Twitter pode ser visto links ou nas hashtags um tipo de texto com fonte diferente e formato diferente.

Como seria isso feito nos códigos? Estariam esses aplicativos usando vários TextViews cada um com seu formato?  A resposta está na classe Spannable, que é uma associação a tag <span> do HTML. Essa classe  é capaz de receber uma String contendo o texto a ser exibido e proporciona o método setSpan() para que atribuamos estilos à trechos especificadosos por index de início e  index fim.


TextView myTextView = (TextView) findViewById(R.id.my_text_view);
Spannable sText = new SpannableString("That's my colorful hello world");
sText.setSpan(new BackgroundColorSpan(Color.RED), 1, 4, 0);
sText.setSpan(new ForegroundColorSpan(Color.BLUE), 5, 9, 0);
myTextView .setText(sText);

No exemplo acima,  temos a captura de um TextView de um arquivo visual .xml e a inserção nele de um objeto da classe Spannable, que contém um texto com várias formatações. Repare que a instanciação do objeto Spannable não pode ser direta, já que Spannable é uma classe abstrata, sendo assim, instanciamos uma classe filha, SpannableString.

Outro detalhe é o método setSpan() que, como já dito, permite que formatemos parte do texto, informando o index de qual caractere à qual caractere a formatação será aplicada. Veja Como é o cabeçalho do método : setSpan(java.lang.Object oQue, int indexCaractereInicial, int indiceCaractereFinal, int flags).

E por sim, jogamos esse objeto Spannable dentro do objeto TextView através do mesmo método que usamos para inserir um texto no formato String em TextViews, setText().

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s