Existe uma maneira de definir o textStyle
atributo de um TextView
programaticamente? Não parece haver um setTextStyle()
método.
Para ser claro, não estou falando de estilos de exibição / widget! Eu estou falando sobre o seguinte:
<TextView
android:id="@+id/my_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World"
android:textStyle="bold" />
Respostas:
setTypeface é o atributo textStyle.
Como Shankar V adicionou, para preservar os atributos de tipo de letra definidos anteriormente, você pode usar:
fonte
textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);
textview.getTypeface().getStyle()
éandroid:textStyle
Digamos que você tenha um estilo chamado RedHUGEText em seus values / styles.xml:
Basta criar seu TextView como de costume no arquivo XML layout / your_layout.xml, digamos:
E no código java da sua atividade, você faz o seguinte:
Funcionou para mim! E aplicou cor, tamanho, gravidade, etc. Eu usei em aparelhos e tablets com níveis de API do Android de 8 a 17 sem problemas. Observe que, a partir do Android 23, esse método foi preterido. O argumento de contexto foi descartado; portanto, a última linha precisaria ser:
Lembre-se ... isso é útil apenas se o estilo do texto realmente depende de uma condição da sua lógica Java ou se você está construindo a interface do usuário "on the fly" com código ... caso contrário, é melhor apenas Faz:
Você sempre pode fazer do seu jeito!
fonte
<style>
tag. Ele faz os mais comuns (tamanho, cor, estilo), mas não se aplica outros (incluindo o preenchimento de fundo, gravidade, etc)Pesquise
setTextAppearance
ou tambémsetTextTypeface
. Há uma pergunta semelhante no stackoverflow: Como alterar o estilo de um TextView em tempo de execuçãofonte
Existem muitas maneiras de realizar essa tarefa: -
1
2)
3)
4)
ou se você quiser através de xml
fonte
•
Kotlin Version
Para manter a fonte atual, além do estilo do texto:
fonte
Esta pergunta é feita em muitos lugares e de várias maneiras diferentes. Originalmente, eu respondi aqui, mas acho que é relevante também neste tópico (desde que acabei aqui quando estava procurando por uma resposta).
Não há uma solução de linha para esse problema, mas isso funcionou para o meu caso de uso. O problema é que o construtor 'View (context, attrs, defStyle)' não se refere a um estilo real, ele quer um atributo. Então, vamos:
Em 'res / values / attrs.xml', defina um novo atributo:
Em res / values / styles.xml ', vou criar o estilo que quero usar no meu TextView personalizado
Em 'res / values / themes.xml' ou 'res / values / styles.xml', modifique o tema para seu aplicativo / atividade e adicione o seguinte estilo:
Finalmente, no seu TextView personalizado, agora você pode usar o construtor com o atributo e ele receberá seu estilo
Vale a pena notar que eu usei repetidamente customTextView em diferentes variantes e lugares diferentes, mas não é necessário que o nome da exibição corresponda ao estilo, ao atributo ou a qualquer coisa. Além disso, essa técnica deve funcionar com qualquer exibição personalizada, não apenas com TextViews.
fonte
Isso funcionou para mim
ou
fonte
Eu o resolvi com dois métodos simples.
Siga a explicação.
Minha declaração de estilo existente:
Meu código Java do Android:
Saudações.
fonte
Você pode tentar este
fonte
Como
setTextAppearance(resId)
está disponível apenas para a API 23 e superior, use:TextViewCompat.setTextAppearance(textViewGoesHere, resId)
Este método é implementado internamente da seguinte maneira:
fonte
Conforme mencionado aqui , esse recurso não é suportado no momento.
fonte