Gostaria de alterar o android:fontFamily
no Android, mas não vejo fontes predefinidas no Android. Como seleciono um dos pré-definidos? Eu realmente não preciso definir meu próprio TypeFace, mas tudo o que preciso é algo diferente do que ele mostra agora.
<TextView
android:id="@+id/HeaderText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="52dp"
android:gravity="center"
android:text="CallerBlocker"
android:textSize="40dp"
android:fontFamily="Arial"
/>
Parece que o que eu fiz lá em cima não vai funcionar! BTW android:fontFamily="Arial"
foi uma tentativa estúpida!
Respostas:
No android 4.1 / 4.2 / 5.0, as seguintes famílias de fontes Roboto estão disponíveis:
em combinação com
estas 16 variantes são possíveis:
fonts.xml
fonte
android:fontFamily="sans-serif-black-small-caps"
não funciona. Alguém sabe?android:fontFamily
TextView.Esta é a maneira de definir a fonte programaticamente:
coloque o arquivo de fonte na sua pasta de ativos. No meu caso, criei um subdiretório chamado fontes.
EDIT: Se você se perguntar onde está sua pasta de ativos, consulte esta pergunta
fonte
A partir do Android-Studio 3.0, é muito fácil mudar a família de fontes
Usando a biblioteca de suporte 26, ele funcionará em dispositivos executando a API Android versão 16 e superior
Crie uma pasta
font
nores
diretório. Baixe a fonte que desejar e cole-a dentro dafont
pasta. A estrutura deve ser algo como abaixoNota: A partir da Biblioteca de suporte do Android 26.0, você deve declarar os dois conjuntos de atributos (android: e app:) para garantir que suas fontes sejam carregadas em dispositivos executando o Api 26 ou inferior.
Agora você pode alterar a fonte no layout usando
Para mudar programaticamente
Para alterar a fonte usando styles.xml, crie um estilo
e aplique esse estilo a
TextView
você também pode criar sua própria família de fontes
- Clique com o botão direito do mouse na pasta fonte e vá para Novo> Arquivo de Recurso Fonte . A janela Novo arquivo de recurso é exibida.
- Digite o nome do arquivo e clique em OK . O novo XML do recurso de fonte é aberto no editor.
Escreva sua própria família de fontes aqui, por exemplo
isso é simplesmente um mapeamento de um fontStyle e fontWeight específico para o recurso de fonte que será usado para renderizar essa variante específica. Os valores válidos para fontStyle são normais ou itálicos; e fontWeight está em conformidade com a especificação de peso da fonte CSS
1. Para alterar a família da fonte no layout, você pode escrever
2. Alterar programaticamente
Para alterar a fonte de todo o aplicativo Adicione essas duas linhas no AppTheme
Consulte o Tutorial sobre documentação , fontes personalizadas do Android Para obter mais informações
fonte
getResources()
? Edição : Esta linha no final da sua resposta funcionou para mim: #Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);
android:fontWeight
eapp:fontWeight
Eu tive que analisar
/system/etc/fonts.xml
em um projeto recente. Aqui estão as famílias de fontes atuais no Lollipop:Aqui está o analisador (baseado em FontListParser ):
Sinta-se livre para usar a classe acima em seu projeto. Por exemplo, você pode oferecer aos usuários uma seleção de famílias de fontes e definir o tipo de letra com base nas preferências deles.
Um pequeno exemplo incompleto:
fonte
getSystemFonts()
, eu tenho uma exceçãoorg.xmlpull.v1.XmlPullParserException: END_TAG expected (position:START_TAG (empty) <axis tag='wdth' stylevalue='100.0'>@219:51 in java.io.InputStreamReader@f001fb3)
O Android não permite que você defina fontes personalizadas no layout XML. Em vez disso, você deve agrupar o arquivo de fonte específico na pasta de ativos do seu aplicativo e configurá-lo programaticamente. Algo como:
Observe que você só pode executar esse código depois que setContentView () for chamado. Além disso, apenas algumas fontes são suportadas pelo Android e devem estar no formato
.ttf (TrueType)
ou.otf (OpenType)
. Mesmo assim, algumas fontes podem não funcionar.este é uma fonte que definitivamente funciona no Android, e você pode usá-la para confirmar se o seu código está funcionando, caso seu arquivo de fonte não seja compatível com o Android.
Atualização do Android O: agora é possível com XML no Android O , com base no comentário de Roger.
fonte
Para definir o Roboto programaticamente:
fonte
É o mesmo que
android:typeface
.fontes internas são:
Veja android: tipo de letra .
fonte
setTypeface()
. Ou sejafontFamily
,typeface
etextStyle
. Mas, durante toda a minha vida, não consigo descobrir como eles são combinados com precisão para resolver uma instância concreta do Typeface. Alguém desvendou isso? A documentação do Google é menos que útil ...Se você quiser programaticamente, você pode usar
Onde
SANS_SERIF
você pode usar:DEFAULT
DEFAULT_BOLD
MONOSPACE
SANS_SERIF
SERIF
E onde
ITALIC
você pode usar:BOLD
BOLD_ITALIC
ITALIC
NORMAL
Tudo é declarado nos desenvolvedores Android
fonte
Estou usando a excelente biblioteca de caligrafia de Chris Jenx, projetada para permitir que você use fontes personalizadas em seu aplicativo Android. De uma chance!
fonte
O que você quer não é possível. Você deve definir
TypeFace
seu código.No
XML
que você pode fazer écaso contrário, você não poderá jogar muito com as fontes em XML. :)
Para
Arial
você precisar definir o tipo face no seu código.fonte
Uma maneira fácil de gerenciar as fontes seria declará-las por meio de recursos, como:
Isso é baseado no código fonte aqui e aqui
fonte
Dinamicamente, você pode definir a família de fontes semelhante ao android: fontFamily em xml usando this,
Esta é a lista da família de fontes padrão usada. Use qualquer uma dessas opções substituindo a sequência de aspas duplas "sans-serif-medium"
"mycustomfont.ttf" é o arquivo ttf. O caminho estará em src / assets / fonts / mycustomfont.ttf , você pode consultar mais sobre a fonte padrão nesta família de fontes Padrão
fonte
defina facilmente a fonte para qualquer visualização de texto do diretório res> font programaticamente
fonte
Acho que estou atrasado, mas talvez essa solução seja útil para outros. Para usar fontes personalizadas, coloque seu arquivo de fontes no diretório de fontes.
fonte
Com algumas tentativas e erros, aprendi o seguinte.
No * .xml, você pode combinar as fontes de estoque com as seguintes funções, não apenas com o tipo de letra:
Com esses dois estilos, não havia necessidade de usar o tipo de letra em nenhum outro caso. A variedade de combinações é muito maior com fontfamily & textStyle.
fonte
O valor válido do android: fontFamily é definido em /system/etc/system_fonts.xml(4.x) ou /system/etc/fonts.xml(5.x). Mas o Fabricante do dispositivo pode modificá-lo, portanto a fonte real usada pela configuração do valor fontFamily depende do arquivo mencionado acima do dispositivo especificado.
No AOSP, a fonte Arial é válida, mas deve ser definida usando "arial" e não "Arial", por exemplo, android: fontFamily = "arial" . Dê uma olhada no system_fonts.xml de Kitkat
//////////////////////////////////////////////////// ////////////////////////
Existem três atributos xml relevantes para definir uma "fonte" no layout - android: fontFamily , android: typeface e android: textStyle . A combinação de "fontFamily" e "textStyle" ou "typeface" e "textStyle" pode ser usada para alterar a aparência da fonte no texto, assim como usada sozinha. Fragmento de código no TextView.java, como este:
A partir do código, podemos ver:
fonte
Aqui está uma maneira mais fácil que pode funcionar em alguns casos. O princípio é adicionar um TextVview não visível no seu layout xml e obter seu typeFace no código java.
O layout no arquivo xml:
E o código java:
Funcionou para mim (dentro de um TextSwitcher, por exemplo).
fonte
Tente o seguinte:
fonte
Você também pode fazer isso adicionando uma pasta de fontes no diretório res, como abaixo.
Em seguida, selecione Fonte como o tipo de recurso.
Você pode encontrar fontes disponíveis em https://www.1001fonts.com/ e, em seguida, extrair os arquivos TTF para esse diretório de fontes.
Por fim, basta alterar o arquivo XML que contém a sua visualização de texto adicionando android: fontFamily: "@ font / urfontfilename"
fonte
app:fontFamily=
, no entanto, todo o resto é o mesmo.Uma maneira simples é adicionar a fonte desejada no projeto.
Vá para Arquivo-> Novo-> Novo Diretório de Recursos Selecione a fonte
Isso criará um novo diretório, fonte , em seus recursos.
Baixe sua fonte (.ttf) . Eu uso https://fonts.google.com para o mesmo
Adicione isso à sua pasta de fontes e use-os no XML ou programaticamente.
XML -
Programaticamente -
fonte
ResourcesCompat.getFont
método de usofonte
Se você deseja usar um TextView em tantos lugares com a mesma família de fontes, estenda a classe TextView e defina sua fonte assim: -
E, em seguida, use esta classe personalizada em xml para o TextView da seguinte maneira: -
fonte
Se você estiver usando o Android Studio 3.5 ou superior, a alteração da fonte é super simples. Selecione o widget de texto no modo Design e marque fontFamily na janela Attribute. A lista suspensa de valores contém todas as fontes disponíveis das quais você pode selecionar uma. Se você estiver procurando por fontes do Google, clique na opção Mais fontes.
Janela de atributo
Fontes do Google
fonte
Eu só quero mencionar que o inferno com as fontes dentro do Android está prestes a terminar, porque este ano no Google IO finalmente chegamos a isso -> https://developer.android.com/preview/features/working-with-fonts. html
Agora, existe um novo tipo de recurso, uma fonte, e você pode colocar todas as fontes do seu aplicativo na pasta res / fonts e acessar com R.font.my_custom_font, assim como você pode acessar valores de string res, valores de drawable res etc. Você ainda tem chance para criar um arquivo xml font-face , que será definido com suas fontes personalizadas (sobre itálico, negrito e sublinhado).
Leia o link acima para mais informações. Vamos ver o suporte.
fonte
Redman
a resposta do usuário acima ainda é uma parte necessária da solução.Existe uma boa biblioteca disponível para este
fonte
O novo recurso de fonte permite definir diretamente
font
usandofonte
Você define o estilo
res/layout/value/style.xml
assim:e para usar esse estilo no
main.xml
arquivo use:fonte
Para o android-studio 3 e superior, você pode usar esse estilo e
textView
alterar todas as fontes no aplicativo.crie este estilo no seu
style.xml
:Em seguida, use-o no seu tema:
fonte
A maneira mais fácil de adicionar a fonte programaticamente a um TextView é, primeiro, adicionar o arquivo de fonte na sua pasta Assets no projeto. Por exemplo, seu caminho da fonte está assim:
assets/fonts/my_font.otf
E adicione-o a um TextView como:
Kotlin
Java
fonte
Aqui você pode ver todos os valores de fontFamily disponíveis e os nomes dos arquivos de fontes correspondentes (este arquivo está usando no Android 5.0+). No dispositivo móvel, você pode encontrá-lo em:
(Para o Android 4.4 e abaixo, use esta versão, mas acho que
fonts.xml
tem um formato mais claro e fácil de entender.)Por exemplo,
O atributo name
name="sans-serif"
dafamily
tag definiu o valor que você pode usar no android: fontFamily.A
font
tag define os arquivos de fonte correspondentes.Nesse caso, você pode ignorar a fonte em
<!-- fallback fonts -->
que está usando a lógica de fallback das fontes.fonte