Não sei como transformar um texto específico no TextView em BOLD.
É tipo isso
txtResult.setText(id+" "+name);
Eu quero que a saída seja assim:
1111 neil
id
e name
são variáveis que recuperei o valor do banco de dados e desejo que o id
negrito seja, mas apenas o id
que name
não será afetado, não tenho idéia de como fazer isso.
android
textview
android-textattributes
Budi Darmawan
fonte
fonte
Respostas:
Basta criar sua String em HTML e configurá-la:
fonte
Html.fromHtml()
agora está obsoletoEmbora você possa usar Html.fromHtml (), você pode usar uma abordagem mais nativa, que é SpannableStringBuilder , esta publicação pode ser útil.
fonte
Primeiro: você não precisa se preocupar em usar o código de desempenho lento da resposta do Raghav Sood .
Segundo: você não precisa escrever uma função de extensão fornecida pela resposta do w3bshark ao usar o Kotlin.
Finnaly: Tudo que você precisa fazer é usar a biblioteca android-ktx Kotlin do Google (consulte aqui para obter mais informações e como incluí-la em seu projeto):
ATUALIZAR:
Porque acho que isso pode ajudar alguém e demonstrar até onde você pode ir aqui há mais casos de uso.
Quando você precisar exibir um texto com algumas partes em azul e itálico:
Quando você precisar exibir um texto em negrito e itálico:
Em suma,
bold
,append
,color
eitalic
são funções de extensão paraSpannableStringBuilder
. Você pode ver outras funções de extensão na documentação oficial , de onde você pode pensar em outras possibilidades.fonte
Eu pensei que a resposta escolhida não forneceu um resultado satisfatório. Eu escrevi minha própria função, que tem 2 strings; O texto completo e a parte do texto que você deseja colocar em negrito.
Ele retorna um SpannableStringBuilder com o 'textToBold' de 'text' em negrito.
Acho que a capacidade de tornar uma substring em negrito sem envolvê-la em tags é útil.
fonte
Como disse wtsang02, o uso de HTML é uma sobrecarga cara. Basta usar a solução nativa. Se você não precisar modificar a sequência, use SpannableString, não SpannableStringBuilder.
fonte
Caso deseje usar a string do XML, você pode fazer algo assim:
strings.xml (a parte "CDATA" é importante, caso contrário não funcionará)
arquivo de layout
código
fonte
<string name="test"><b>text bold</b> other text</string>
. Não funciona se eu escrever<![CDATA[
É simples apenas fechar o texto especificado como este, por exemplo
<b>"your text here:"</b>
Resultado: Sede: Mooresville, Carolina do Norte, EUA
fonte
Se você estiver usando o Kotlin, fica ainda mais fácil usar
core-ktx
, pois fornece uma linguagem específica de domínio (DSL) para fazer isso:Mais opções fornecidas por ele são:
Por fim, você pode apenas:
fonte
Aqui está uma solução melhor, se você quiser colocar vários textos em negrito. Eu melhorei o código de Eitan. obrigado Eitan.
fonte
Com base na resposta de @ mladj0ni, obtive o código abaixo para funcionar. O problema era que, se você usar String.format , retira a marcação html, portanto, você precisa escapar dos símbolos de colchete em strings.xml:
strings.xml:
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
code.java:
É mais simples que o SpannableStringBuilder. Quanto ao desempenho, se você estiver exibindo apenas uma sequência, o usuário não notará o milissegundo extra para analisá-la.
Veja a documentação aqui .
fonte
Você pode usar esse código para definir parte do seu texto em negrito. Para o que quer que esteja entre as tags html em negrito, ele ficará em negrito.
fonte
Tente isso. Pode ajudar definitivamente
fonte
Torne o primeiro caractere da string extensível enquanto procura por char na lista / reciclador, como
destacando anteriormente como este, mas eu queria ser como abaixo
Para isso, procurei o comprimento da palavra, se for igual a 1, separei a sequência principal em palavras e calculei a posição inicial da palavra, depois procurei a palavra começando com char.
fonte
Eu vim aqui para fornecer uma solução mais atualizada, porque não estava satisfeito com as respostas existentes. Eu precisava de algo que funcionasse para textos traduzidos e não tem o desempenho de usar
Html.fromHtml()
. Se você estiver usando o Kotlin, aqui está uma função de extensão que definirá facilmente várias partes do seu texto para negrito . Isso funciona como o Markdown e pode ser estendido para suportar outras tags do Markdown, se necessário.fonte
A resposta wtsang02 é a melhor maneira de fazer isso, pois o Html.fromHtml ("") agora está obsoleto. Aqui, eu apenas vou aprimorá-lo um pouco para quem está tendo problemas para tornar dinamicamente a primeira palavra em negrito, independentemente do tamanho da frase.
Primeiro vamos criar um método para obter a primeira palavra:
Agora, digamos que você tenha uma sequência longa como esta:
E você quer que sua frase seja como [email protected] quer ser sua amiga! Tudo o que você precisa fazer é obter a primeira palavra e obter o comprimento necessário para tornar a primeira palavra em negrito, algo como isto:
Agora basta seguir os passos do wtsang02 , desta maneira:
E é isso! Agora você deve poder colocar uma palavra em negrito com qualquer tamanho, de sentença longa / curta. Espero que ajude alguém, feliz codificação :)
fonte
Esta é a função de extensão Kotlin que eu uso para isso
Uso:
.
fonte
Você pode adicionar as duas strings separadamente no construtor, uma delas é spannedString e a outra é regular. Dessa forma, você não precisa calcular os índices.
fonte
se a posição do texto em negrito for fixa (ex: se estiver no início do textView), use dois textView diferentes com o mesmo plano de fundo. Em seguida, você pode tornar o textStyle do outro textView em negrito.
Isso exigirá o dobro da memória em comparação com um único textView, mas a velocidade aumentará.
fonte
Outro código mais personalizado
fonte
Caso alguém esteja usando vinculação de dados. Podemos definir um adaptador de ligação como este
Em seguida, podemos usá-lo em um TextView
onde bold_text é
fonte
Foi encontrada uma maneira, caso você queira lidar com a localização em vários idiomas, é chato, mas funciona, vamos supor que queremos isso:
Em inglês:
Em espanhol:
Você tem que criar 3 strings
Inglês:
Espanhol:
Agora você pode fazer isso:
fonte
Seu recurso String
sua classe java
fonte
Aqui está minha solução completa para valores dinâmicos de String com verificação de caso.
Por exemplo. completeString = "Estou em negrito"
CASO I se
*targetStringToFormat* = "bold"
e*matchCase* = true
CASO II se
*targetStringToFormat* = "bold"
e*matchCase* = false
Aplicar:
Espero que ajude!
fonte