Estou usando a fonte de luz Roboto no meu aplicativo. Para definir a fonte, eu devo adicionar a android:fontFamily="sans-serif-light"
todas as visualizações. Existe alguma maneira de declarar a fonte Roboto como família de fontes padrão para o aplicativo inteiro? Eu tentei assim, mas não parecia funcionar.
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:fontFamily">sans-serif-light</item>
</style>
android
android-fonts
tomrozb
fonte
fonte
Respostas:
A resposta é sim.
Global Roboto light para
TextView
eButton
classes:Basta selecionar o estilo desejado na lista themes.xml e depois criar seu estilo personalizado com base no original. No final, aplique o estilo como tema do aplicativo.
Ele funcionará apenas com fontes internas como o Roboto, mas essa foi a questão. Para fontes personalizadas (carregadas de ativos, por exemplo), esse método não funciona.
EDIT 13/08/15
Se você estiver usando temas do AppCompat, lembre-se de remover o
android:
prefixo. Por exemplo:Observe que o prefixo
buttonStyle
não contémandroid:
, mastextViewStyle
deve conter.fonte
sans-serif-light
valor? Existe uma lista de valores válidos parafontFamily
algum lugar? Estive pesquisando os documentos, os arquivos de tema e estilo na fonte do Android e não consigo encontrar nada.Com o lançamento do Android Oreo, você pode usar a biblioteca de suporte para atingir esse objetivo.
Faça referência à sua família de fontes padrão no estilo principal do seu aplicativo:
Verifique https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html para obter informações mais detalhadas.
fonte
android:
prefixoBase.TextAppearance.AppCompat
, não é usado lá.Para alterar a fonte do seu aplicativo, siga as seguintes etapas:
res
Diretório interno crie um novo diretório e chame-ofont
.res
->values
->styles.xml
dentro<resources>
-><style>
adicione sua fonte<item name="android:fontFamily">@font/font_name</item>
.Agora todo o texto do seu aplicativo deve estar na fonte que você adicionar.
fonte
LEIA ATUALIZAÇÕES ABAIXO
Eu tive o mesmo problema com a incorporação de uma nova fonte e finalmente consegui trabalhar com a extensão do TextView e definir o tipo de letra dentro.
Você precisa alterar os elementos do TextView posteriormente para de em todos os elementos. E se você usar o UI-Creator no Eclipse, às vezes ele não mostra os TextViews corretamente. Foi a única coisa que funcionou para mim ...
ATUALIZAR
Atualmente, estou usando a reflexão para alterar os tipos de letra em todo o aplicativo sem estender TextViews. Confira esta postagem do SO
ATUALIZAÇÃO 2
A partir do nível 26 da API e disponível na 'biblioteca de suporte', você pode usar
Mais informações: Fontes em XML
fonte
getContext()
quando a variável é estática. Você deve implementá-lo da maneira singleton, caso contrário, o código atual nem será compilado.Adicione esta linha de código em seu res / value / styles.xml
todo o estilo será assim
altere "circular_medium" para o seu próprio nome de fonte.
fonte
Para não falar de desempenho, para fontes personalizadas, você pode ter um método recursivo em loop através de todas as visualizações e definir o tipo de letra, se for um TextView:
Em toda a sua atividade, passe o ViewGroup atual para ele após setContentView e pronto:
Para fragmento, você pode fazer algo semelhante.
fonte
recyclerView
como o inferno.Outra maneira de fazer isso para todo o aplicativo é usar a reflexão com base nesta resposta
sempre que quiser substituir as fontes, basta chamar o método e fornecer um mapa de tipos de letra da seguinte maneira:
para ver exemplo completo
Isso funciona apenas para o Android SDK 21 e superior para versões anteriores. Verifique o exemplo completo
fonte
Basta usar esta lib compile-a no seu arquivo de notas
e use-o no método onCreate na atividade principal
Esta é a maneira mais rápida e elegante de fazer isso.
fonte
Este é o trabalho para o meu projeto, fonte https://gist.github.com/artem-zinnatullin/7749076
Crie um diretório de fontes dentro da Pasta de ativos e, em seguida, copie sua fonte personalizada para o diretório de fontes, por exemplo, estou usando trebuchet.ttf;
Crie uma classe TypefaceUtil.java;
Editar tema em styles.xml adicione abaixo
Exemplo em Meus styles.xml
Por fim, em Activity or Fragment onCreate, chame TypefaceUtil.java
fonte
O Android não oferece muito suporte para a aplicação de fontes em todo o aplicativo (consulte esta edição ). Você tem 4 opções para definir a fonte para todo o aplicativo:
Detalhes dessas opções podem ser encontradas aqui .
fonte
Eu sei que esta pergunta é bastante antiga, mas eu encontrei uma boa solução. Basicamente, você passa um layout de contêiner para esta função, e ela aplicará a fonte a todas as visualizações suportadas e circulará recursivamente nos layouts filhos:
fonte
meramente conjunto fonte de aplicativo para
normal
,sans
,serif
oumonospace
(não uma fonte personalizada!), você pode fazer isso.defina um tema e defina o
android:typeface
atributo para o tipo de letra que você deseja usarstyles.xml
:aplique o tema a todo o aplicativo no
AndroidManifest.xml
arquivo:referência android
fonte
Experimente esta biblioteca, leve e fácil de implementar
https://github.com/sunnag7/FontStyler
fonte
A resposta é não, você não pode. Consulte É possível definir uma fonte personalizada para todo o aplicativo? Para maiores informações.
Existem soluções alternativas, mas nada nas linhas de "uma única linha de código aqui e todas as minhas fontes serão esta em vez daquela ".
(Eu meio que agradeço ao Google - e à Apple - por isso). As fontes personalizadas têm um lugar, mas torná-las fáceis de substituir por todo o aplicativo teriam criado um mundo inteiro de aplicativos do Comic Sans )
fonte