Primeiro, o padrão não é Arial. O padrão é Droid Sans.
Segundo, para mudar para uma fonte interna diferente, use android:typefaceno layout XML ou setTypeface()em Java.
Terceiro, não há fonte Helvetica no Android. As opções integradas são Droid Sans ( sans), Droid Sans Mono ( monospace) e Droid Serif ( serif). Embora você possa agrupar suas próprias fontes com seu aplicativo e usá-las via setTypeface(), lembre-se de que os arquivos de fonte são grandes e, em alguns casos, exigem contratos de licenciamento (por exemplo, Helvetica, uma fonte Linotype ).
EDITAR
A linguagem de design do Android se baseia em ferramentas tipográficas tradicionais, como escala, espaço, ritmo e alinhamento com uma grade subjacente. A implantação bem-sucedida dessas ferramentas é essencial para ajudar os usuários a entender rapidamente uma tela de informações. Para apoiar esse uso da tipografia, a Ice Cream Sandwich introduziu uma nova família de tipos chamada Roboto, criada especificamente para os requisitos de interface do usuário e telas de alta resolução.
A estrutura atual do TextView oferece Roboto em pesos finos, leves, regulares e ousados, além de um estilo em itálico para cada peso. A estrutura também oferece a variante Roboto Condensada em pesos regulares e em negrito, além de um estilo em itálico para cada peso.
Após o ICS, o Android inclui o estilo de fontes Roboto, Leia mais Roboto
EDIT 2
Com o advento da Biblioteca de Suporte 26, o Android agora suporta fontes personalizadas por padrão. Você pode inserir novas fontes em res / fontes, que podem ser definidas para TextViews individualmente, em XML ou programaticamente. A fonte padrão para todo o aplicativo também pode ser alterada, definindo-o styles.xml A documentação do desenvolvedor do Android tem um guia claro sobre isso aqui
Definir o tipo de letra usando o código java é difícil devido a várias linhas. Criei uma biblioteca para definir fontes personalizadas. Você pode encontrar uma biblioteca uso nesta resposta stackoverflow.com/a/42001474/4446392
Chathura Jayanath
254
Primeiro baixe o .ttfarquivo da fonte que você precisa ( arial.ttf). Coloque-o na assets pasta (Dentro da pasta de ativos, crie uma nova pasta chamada fontes e coloque-a dentro dela.) Use o seguinte código para aplicar a fonte ao seu TextView:
Typeface type =Typeface.createFromAsset(getAssets(),"fonts/arial.ttf");
textView.setTypeface(type);
Você pode criar uma classe estática que conterá todas as fontes. Dessa forma, você não criará a fonte várias vezes, o que pode ter um impacto negativo no desempenho . Apenas certifique-se de criar uma subpasta chamada " fontes " na pasta " ativos ".
Faça algo como:
publicclassCustomFontsLoader{publicstaticfinalint FONT_NAME_1 =0;publicstaticfinalint FONT_NAME_2 =1;publicstaticfinalint FONT_NAME_3 =2;privatestaticfinalint NUM_OF_CUSTOM_FONTS =3;privatestaticboolean fontsLoaded =false;privatestaticTypeface[] fonts =newTypeface[3];privatestaticString[] fontPath ={"fonts/FONT_NAME_1.ttf","fonts/FONT_NAME_2.ttf","fonts/FONT_NAME_3.ttf"};/**
* Returns a loaded custom font based on it's identifier.
*
* @param context - the current context
* @param fontIdentifier = the identifier of the requested font
*
* @return Typeface object of the requested font.
*/publicstaticTypeface getTypeface(Context context,int fontIdentifier){if(!fontsLoaded){
loadFonts(context);}return fonts[fontIdentifier];}privatestaticvoid loadFonts(Context context){for(int i =0; i < NUM_OF_CUSTOM_FONTS; i++){
fonts[i]=Typeface.createFromAsset(context.getAssets(), fontPath[i]);}
fontsLoaded =true;}}
Dessa forma, você pode obter a fonte de qualquer lugar no seu aplicativo.
Cara incrível! Essa é a beleza do OOP. Ótimo trabalho! :)
Joshua Michael Wagoner
Como uso esta classe?
30515 Jack
Você precisa colocar esse código no seu projeto, adaptá-lo às fontes e, em seguida, usar o método estático getTypeface (..) de qualquer lugar do seu aplicativo.
Daniel L.
Usei uma solução semelhante, mas adicionei o cache para melhorar o desempenho .... de qualquer forma, você encontrou uma situação em que a fonte funciona em alguns telefones e em outros?
Por que a subclasse de TextView é a melhor prática?
Rabino Stealth
@ Rabino Stealth, aqui podemos passar fontes personalizadas apenas por xml, sem necessidade de escrever código java especial para cada visualização de texto.
Hiren Patel
Existe biblioteca para isso. Simplesmente adicione sua fonte na pasta de ativos e declare-a em XML. github.com/febaisi/CustomTextView
febaisi
Sua biblioteca parece bem, mas o único problema é que é para o Android 21+
As respostas acima estão corretas. Apenas certifique-se de criar uma subpasta chamada "fontes" na pasta "ativos" se estiver usando esse trecho de código.
Por que esta resposta tem apenas 1 voto positivo e a resposta acima tem 15? O que torna o outro melhor? Parece-me que este é o mais direto usando o princípio singleton ...?
Koen Demonie 24/03
Acabei de ver que você tem seu construtor público, eu o tornaria privado, já que você não precisa de nenhum acesso a ele. Você está usando a sua fonte interna vars de qualquer maneira ...
Koen Demonie
Absolutamente deve ser construtor privado. Bem manchado :) vai editar!
precisa
12
A melhor prática é usar a Biblioteca de Suporte Android versão 26.0.0 ou superior.
PASSO 1: adicionar arquivo de fonte
Em res pasta Criar nova fonte dicionário de recursos de
Adicionar arquivo de fonte ( .ttf , .orf )
Por exemplo, quando o arquivo de fonte será helvetica_neue.ttf, que gera R.font.helvetica_neue
PASSO 2: criar família de fontes
Na fonte pasta adicione um novo arquivo de recurso
Coloque cada arquivo de fonte, estilo e atributo de peso no elemento
É um pouco antigo, mas aprimorei um pouco a classe CustomFontLoader e queria compartilhá-la para que pudesse ser útil. Basta criar uma nova classe com este código.
em seguida, crie um diretório chamado "fonte" dentro da pasta res
coloque arquivos de fontes (ttf) nesse diretório de fontes, lembre-se das convenções de nomenclatura [egname não deve conter nenhum caractere especial, nenhum caractere maiúsculo e qualquer espaço ou guia]
Depois disso, faça referência a essa fonte de xml como esta
Você precisa instanciar esta classe no MainActivity? Porque não está mudando nada para mim.
precisa saber é o seguinte
1
O Android usa a fonte Roboto, que é uma fonte realmente bonita, com vários pesos diferentes (regular, leve, fino, condensado) que ficam ótimos em telas de alta densidade.
Verifique o link abaixo para verificar as fontes roboto:
De volta à sua pergunta, se você deseja alterar a fonte de todo o TextView / Button no seu aplicativo , tente adicionar o código abaixo ao styles.xml para usar a fonte Roboto-light :
<!-- Base application theme. --><stylename="AppTheme"parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here.-->......<item name="android:buttonStyle">@style/MyButton</item><item name="android:textViewStyle">@style/MyTextView</item></style><stylename="MyButton"parent="@style/Widget.AppCompat.Button"><item name="android:textAllCaps">false</item><item name="android:fontFamily">sans-serif-light</item></style><stylename="MyTextView"parent="@style/TextAppearance.AppCompat"><item name="android:fontFamily">sans-serif-light</item></style>
E não se esqueça de usar 'AppTheme' no seu AndroidManifest.xml
Respostas:
Primeiro, o padrão não é Arial. O padrão é Droid Sans.
Segundo, para mudar para uma fonte interna diferente, use
android:typeface
no layout XML ousetTypeface()
em Java.Terceiro, não há fonte Helvetica no Android. As opções integradas são Droid Sans (
sans
), Droid Sans Mono (monospace
) e Droid Serif (serif
). Embora você possa agrupar suas próprias fontes com seu aplicativo e usá-las viasetTypeface()
, lembre-se de que os arquivos de fonte são grandes e, em alguns casos, exigem contratos de licenciamento (por exemplo, Helvetica, uma fonte Linotype ).EDITAR
Após o ICS, o Android inclui o estilo de fontes Roboto, Leia mais Roboto
EDIT 2
fonte
Primeiro baixe o
.ttf
arquivo da fonte que você precisa (arial.ttf
). Coloque-o naassets
pasta (Dentro da pasta de ativos, crie uma nova pasta chamada fontes e coloque-a dentro dela.) Use o seguinte código para aplicar a fonte ao seuTextView
:fonte
src/main/assets/fonts/
.fonte
Você pode criar uma classe estática que conterá todas as fontes. Dessa forma, você não criará a fonte várias vezes, o que pode ter um impacto negativo no desempenho . Apenas certifique-se de criar uma subpasta chamada " fontes " na pasta " ativos ".
Faça algo como:
Dessa forma, você pode obter a fonte de qualquer lugar no seu aplicativo.
fonte
Melhores práticas de sempre
TextViewPlus.java:
attrs.xml: (onde colocar res / valores )
Como usar:
Espero que isso ajude você.
fonte
As respostas acima estão corretas. Apenas certifique-se de criar uma subpasta chamada "fontes" na pasta "ativos" se estiver usando esse trecho de código.
fonte
Outra maneira de consolidar a criação de fontes ...
E então para usar em sua atividade ...
Lembre-se, esse idioma de bloqueio verificado com o campo volátil funciona apenas corretamente com o modelo de memória usado no Java 1.5+.
fonte
A melhor prática é usar a Biblioteca de Suporte Android versão 26.0.0 ou superior.
PASSO 1: adicionar arquivo de fonte
Por exemplo, quando o arquivo de fonte será helvetica_neue.ttf, que gera R.font.helvetica_neue
PASSO 2: criar família de fontes
Por exemplo:
PASSO 3: use-o
Nos layouts xml:
Ou adicione fontes ao estilo:
Para mais exemplos, você pode seguir a documentação:
fonte
É um pouco antigo, mas aprimorei um pouco a classe CustomFontLoader e queria compartilhá-la para que pudesse ser útil. Basta criar uma nova classe com este código.
Em seguida, basta usar este código no seu textview:
fonte
Eu finalmente consegui uma solução muito fácil para isso.
use essas bibliotecas de suporte no nível do aplicativo ,
em seguida, crie um diretório chamado "fonte" dentro da pasta res
Depois disso, faça referência a essa fonte de xml como esta
Neste exemplo, times_new_roman_test é um arquivo ttf de fonte desse diretório de fontes
fonte
Dessa forma, você pode criar uma View que herda de TextView e chama setTypeface em seu construtor.
fonte
Quando sua fonte estiver armazenada,
res/asset/fonts/Helvetica.ttf
use o seguinte:Ou, se o seu arquivo de fonte estiver armazenado,
res/font/helvetica.ttf
use o seguinte:fonte
obter fonte do ativo e definir para todos os filhos
fonte
add to attrs.xml, Os números devem estar na ordem da classe da matriz.
fonte
O Android usa a fonte Roboto, que é uma fonte realmente bonita, com vários pesos diferentes (regular, leve, fino, condensado) que ficam ótimos em telas de alta densidade.
Verifique o link abaixo para verificar as fontes roboto:
Como usar o Roboto no layout xml
De volta à sua pergunta, se você deseja alterar a fonte de todo o TextView / Button no seu aplicativo , tente adicionar o código abaixo ao styles.xml para usar a fonte Roboto-light :
E não se esqueça de usar 'AppTheme' no seu AndroidManifest.xml
fonte
Talvez algo um pouco mais simples:
(Observe que este código não foi testado, mas, em geral, essa abordagem deve funcionar bem.)
fonte