Como usar fonte personalizada em um projeto escrito no Android Studio


Respostas:


335

Atualização 2020:

Crie uma pasta chamada fonte dentro da pasta res e copie sua fonte

insira a descrição da imagem aqui

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="@font/abc_font" />

Para uso programático:

textView.setTypeface(ResourcesCompat.getFont(context, R.font.abc_font))

10
Qualquer pessoa que carregue fontes personalizadas de ativos deve observar que há um erro no Android 5.0 em que algumas fontes não são carregadas. Embora esse problema tenha sido corrigido no Android 5.1, uma solução alternativa para o suporte ao 5.0 é reescrever as fontes ttf. Consulte esta edição para obter mais informações stackoverflow.com/questions/27269264/…
BrentM 1/15/15

A segunda opção funcionou perfeitamente para mim. Obrigado por isso!
Emzor

2
i usado this.getContext () getApplicationContext () getAssets () para encontrar o diretório (estúdio android 2.1)..
kuzdu

1
@kuthue onCreate () está bem. Se você quiser alterar a fonte enquanto o usuário estiver usando o aplicativo, poderá colocá-lo no ponto em que deseja que ele seja alterado. Isso funciona também para os botões
rockhammer

1
Como posso definir que a fonte padrão para todo o projeto seja a fonte personalizada que estou adicionando? É isso que o primeiro exemplo de código está fazendo?
Yonatan Nir

97

https://i.stack.imgur.com/i6XNU.png

  1. Selecione Arquivo> Novo> Pasta> Pasta de Ativos

  2. Clique em terminar

  3. Clique com o botão direito do mouse em ativos e crie uma pasta chamada fontes

  4. Coloque seu arquivo de fonte em ativos > fontes

  5. Use o código abaixo para alterar a fonte do seu textView

    TextView textView = (TextView) findViewById(R.id.textView);
    Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/yourfont.ttf");
    textView.setTypeface(typeface);

12
como usar isso em xml?
Suisse

4
Este tutorial mostra como usá-lo em um XML: stacktips.com/tutorials/android/…
Dinesh

@Suisse A Biblioteca de suporte 26 fornece suporte completo a esse recurso em dispositivos que executam o link da
Ehsan.R 27-17

65

Existem várias maneiras de definir a família de fontes personalizadas no campo e estou usando assim abaixo.

Para adicionar fontes como recursos, execute as seguintes etapas no Android Studio:

1) Clique com o botão direito do mouse na pasta res e vá para Novo> diretório de recursos do Android. A janela Novo Diretório de Recursos é exibida.

2) Na lista Tipo de recurso, selecione a fonte e clique em OK.

Nota: O nome do diretório de recursos deve ser fonte.

3) Adicione seus arquivos de fonte na pasta fonte. insira a descrição da imagem aqui

Adicione a fonte na visualização desejada no seu arquivo xml:

insira a descrição da imagem aqui

Nota: Mas você solicitou o seguinte para isso:

  1. Android Studio acima para 3.0 canary.

  2. Sua atividade estende AppCompatActivity.

  3. Atualize seu arquivo Gradle assim:

    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {        
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

buildtoolsVersionacima de 26 e mínimo targetSdkVersionexigido 26

  1. Inclua dependências no arquivo build.gradle:
classpath 'com.android.tools.build:gradle:3.0.0-beta4'
  1. gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

41

Acho que, em vez de baixar o arquivo .ttf, podemos usar fontes do Google. É muito fácil de implementar. somente você tem que seguir estas etapas. etapa 1) Abra o layout.xml do seu projeto e a família de fontes selecionadas da exibição de texto em atributos (para a captura de tela de referência anexada) insira a descrição da imagem aqui

etapa 2) Na família de fontes selecione Mais fontes .. se a fonte não estiver lá. então você verá uma nova janela se abrir; aí você pode digitar a fonte desejada e selecionar a fonte desejada nessa lista, por exemplo) Regular, Negrito, Itálico etc. como mostrado na imagem abaixo. insira a descrição da imagem aqui

Etapa 3) Em seguida, você observará que uma pasta de fontes será gerada automaticamente na pasta / res com o arquivo xml de fontes selecionado.

insira a descrição da imagem aqui

Em seguida, você pode usar diretamente essa família de fontes no xml como

      android:fontFamily="@font/josefin_sans_bold"

ou pro gramaticamente, você pode conseguir isso usando

  Typeface typeface = ResourcesCompat.getFont(this, R.font.app_font);
  fontText.setTypeface(typeface);

Esta não é uma resposta para a pergunta. Nem todas as fontes estão disponíveis no Google Fonts.
Matt Fletcher

2
Boa resposta! Se você não encontrar sua fonte na lista - carregue-a na pasta assets ou defina-a através do xml
Edgar Khimich

21

Olá, aqui temos uma maneira melhor de aplicar fontes em EditTexts e TextViews no android de uma só vez e aplicá-las em todo o projeto.

Antes de tudo, você precisa criar a pasta de fontes. Aqui estão os passos.

1: Vá para (pasta do projeto) e, em seguida, app> src> main

2: Crie pastas denominadas 'assets / fonts' na pasta principal.

3: Coloque suas fontes na pasta de fontes. Aqui eu tenho 'MavenPro-Regular.ttf'

Aqui estão as etapas para aplicar fontes personalizadas no EditText e, usando essa abordagem, você pode aplicar fontes em cada entrada.

1: Crie uma classe MyEditText (seu nome preferido ...)

2: que estende o EditText

3: aplique sua fonte

Aqui está o código Exemplo;

public class MyEditText extends EditText {

    public MyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public MyEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyEditText(Context context) {
        super(context);
        init();
    }

    private void init() {
        if (!isInEditMode()) {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/MavenPro-Regular.ttf");
            setTypeface(tf);
        }
    }

}

E aqui está o código de como usá-lo.

MyEditText editText = (MyEditText) findViewById(R.id.editText);

editText.setText("Hello");

Ou no seu arquivo xml

   <MyEditText
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:textColor="#fff"
    android:textSize="16dp"
    android:id="@+id/editText"
    />

Essa classe me deu esse erro no tempo de execução: Erro ao inflar a classe MyEditText
GMX

Consulte este link, você pode encontrar algumas dicas sobre como resolver o erro.
Mohammad Naim Dahee


Com a compilação atual, acho que você precisaria alterar isso para "estende AppCompatEditText".
Diesel

15

Com a Biblioteca de suporte 26.0 (e o Android O), as fontes podem ser carregadas facilmente dos recursos com: insira a descrição da imagem aqui

Typeface typeface = ResourcesCompat.getFont(Context context, int fontResourceId) 

Documentos para o método .

Mais informações podem ser encontradas aqui.


9

Quero adicionar minha resposta para o Android-O e o Android Studio 2.4

  1. Crie uma pasta chamada fonte na pasta res . Faça o download das várias fontes que você deseja adicionar ao exemplo de fontes do Google do seu projeto

  2. Dentro da sua família de fontes xml user

    exemplo:

    <TextView
        android:fontFamily="@font/indie_flower"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="@string/sample_text" />

3.Se você quiser que seja de maneira programática, use o código a seguir

Typeface typeface = getResources().getFont(R.font.indie_flower);
textView.setTypeface(typeface);

para obter mais informações, siga o link para minha postagem no blog Estilos de fonte para Android com Android Studio 2.4


6
Observe que se você deseja promover seu próprio produto / blog, deve divulgar sua afiliação ; caso contrário, sua resposta poderá ser sinalizada como spam. Por favor, leia Como não ser um spammer
DavidPostill

Sim @PetterFriberg
Suresh Maidaragi

8

Conforme o novo recurso disponível no Android O, os recursos de fonte em XML estão disponíveis como novo recurso.

Para adicionar fontes como recursos, execute as seguintes etapas no Android Studio:

1) Clique com o botão direito do mouse na pasta res e vá para Novo> diretório de recursos do Android . A janela Novo Diretório de Recursos é exibida.

2) Na lista Tipo de recurso, selecione a fonte e clique em OK.

Nota: O nome do diretório de recursos deve ser fonte.

3) Adicione seus arquivos de fonte na pasta fonte.

Você pode acessar os recursos da fonte com a ajuda de um novo tipo de recurso, a fonte. Por exemplo, para acessar um recurso de fonte, use @ font / myfont ou R.font.myfont.

por exemplo. Typeface typeface = getResources().getFont(R.font.myfont); textView.setTypeface(typeface);


2
deve ser ResourcesCompat.getFont (contexto, R.font.your_font)
Trung Le

7

Você pode usar a biblioteca fácil e simples de terceiros EasyFonts para definir uma variedade de fontes personalizadas para o seu TextView. Ao usar esta biblioteca, você não precisa se preocupar em baixar e adicionar fontes na pasta assets / fonts. Também sobre a criação de objetos Typeface. Você estará livre de criar uma pasta de ativos também.

Simplesmente:

TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setTypeface(EasyFonts.robotoThin(this));

Existem muitos tipos de fontes fornecidos por esta biblioteca.


6

1º adicione o arquivo font.ttf na pasta Font. Em seguida, adicione esta linha no método onCreate

    Typeface typeface = ResourcesCompat.getFont(getApplicationContext(), R.font.myfont);
    mytextView.setTypeface(typeface);

E aqui está o meu xml

            <TextView
            android:id="@+id/idtext1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="7dp"
            android:gravity="center"
            android:text="My Text"
            android:textColor="#000"
            android:textSize="10sp"
        />

4
  1. Crie ativos de pasta em Projeto -> aplicativo (ou nome do seu aplicativo) -> src -> principal -> clique com o botão direito do mouse -> Novo -> Diretório.
  2. Em seguida, crie um novo diretório dentro dos ativos chamado "fontes".

Para atribuir a fonte ao textView:

TextView textView = (TextView) findViewById(R.id.your_textView);

final Typeface font = Typeface.createFromAsset(context.getAssets(), "fonts/your_font_name");

your_font_name inclui extensão de fonte.


3

Se você é muito novo no Android como eu, isso pode ser um pouco complicado. Certifique-se de ligar para:

TextView myTextView = (TextView) findViewById(R.id.textView);
Typeface typeface=Typeface.createFromAsset(getAssets(), "fonts/your font.ttf");
myTextView.setTypeface(typeface);

método dentro de um método como onCreate.


3

O Android 8.0 (API 26) introduziu novos recursos relacionados a fontes.

1) As fontes podem ser usadas como recursos.

2) Fontes para download.

Se você quiser usar fontes externas em seu aplicativo para Android, poderá incluir arquivos de fontes no apk ou configurar fontes para download.

Incluindo arquivos de fonte no APK : você pode baixar arquivos de fonte, salvá-los em res / font arquivador, definir família de fontes e usar família de fontes em estilos.

Para obter mais detalhes sobre o uso de fontes personalizadas como recursos, consulte http://www.zoftino.com/android-using-custom-fonts

Configurando fontes para download : Defina a fonte fornecendo detalhes do provedor, adicione o certificado do provedor e use a fonte nos estilos.

Para obter mais detalhes sobre fontes para download, consulte http://www.zoftino.com/downloading-fonts-android



1
Além disso, apenas porque as fontes Personalizadas / para Download foram introduzidas no Android O (8.0), não significa que não há compatibilidade com versões anteriores. Consulte a documentação oficial sobre como implementar fontes personalizadas. Observe que também pode ser necessário instalar o Android Studio 3.0.
Anthonymonori

1

Primeiro crie uma assetspasta e depois crie uma fontspasta nela.

Então você pode definir a fontpartir assetsou directorycomo abaixo:

public class FontSampler extends Activity {
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);

        TextView tv = (TextView) findViewById(R.id.custom);
        Typeface face = Typeface.createFromAsset(getAssets(), "fonts/HandmadeTypewriter.ttf");

        tv.setTypeface(face);

        File font = new File(Environment.getExternalStorageDirectory(), "MgOpenCosmeticaBold.ttf");

        if (font.exists()) {
            tv = (TextView) findViewById(R.id.file);
            face = Typeface.createFromFile(font);

            tv.setTypeface(face);
        } else {
            findViewById(R.id.filerow).setVisibility(View.GONE);
        }
    }
} 

1

Agora, existem muitas maneiras de aplicar a fonte. Uma das maneiras mais fáceis é a seguinte: 1) Clique com o botão direito do mouse na pasta res, vá para Novo> diretório de recursos do Android.

2) Na lista Tipo de recurso, selecione a fonte e clique em OK.

3) Coloque seus arquivos de fonte na pasta fonte.


1

Adicione suas fontes à pasta assets em app / src / main / assets para criar uma visualização de texto personalizada como esta:

class CustomLightTextView : TextView {

constructor(context: Context) : super(context){
    attachFont(context)
}
constructor(context: Context, attrs: AttributeSet):    super(context, attrs){
    attachFont(context)
}
constructor(context: Context, attrs: AttributeSet?,    defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
    attachFont(context)
}
fun attachFont(context: Context) {
    this.setTypeface(FontCache.getInstance().getLightFont(context))
}

}

Adicione FontCache: para que você não precise criar tipos de letra repetidamente como:

class FontCache private constructor(){

val fontMap = HashMap<String,Typeface>()

companion object {
    private var mInstance : FontCache?=null
    fun getInstance():FontCache = mInstance?: synchronized(this){
        return mInstance?:FontCache().also { mInstance=it }
    }
}

fun getLightFont(context: Context):Typeface?{
    if(!fontMap.containsKey("light")){
        Typeface.createFromAsset(context.getAssets(),"Gotham-Book.otf");
        fontMap.put("light",Typeface.createFromAsset(context.getAssets(),"Gotham-Book.otf"))
    }
    return fontMap.get("light")
}

}

E você está pronto!

PSFrom android O, você pode adicionar fontes diretamente.


1

coloque fontes na pasta de ativos e aplique fontfamily: '' suas fontes


-1

Para novos leitores

Você pode usar esta biblioteca Gloxey Custom Font Views

dependência gradle

  dependencies{
           compile 'io.gloxey.cfv:custom-font-views:1.0.2'
    }

Como usar?

Crie ativos de pasta -> fontes . Copie suas fontes para a pasta de fontes .

Use a propriedade app: font_name = "font_name_string" para aplicar a fonte na exibição.

Exemplo

   <!--Font Names in srings.xml-->
       <string name="aadhunik">aadhunik.ttf</string>
       <string name="kung_fool">kungfool.ttf</string>
       <string name="skrova">skrova.otf</string>
       <string name="painting_in_the_sun_light">painting_in_the_sun_light.ttf</string>

   <!--Include views in layout.xml-->
       <io.gloxey.cfv.CFTextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:gravity="center"
       android:text="Aadhunik"
       android:textColor="#ff00"
       android:textSize="40sp"
       app:font_name="@string/aadhunik" />

       <io.gloxey.cfv.CFButton
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="Kung Fool"
       android:textColor="#154748"
       app:font_name="@string/kung_fool" />

       <io.gloxey.cfv.CFEditText
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:gravity="center"
       android:text="Hello world"
       android:textSize="30sp"
       app:font_name="@string/skrova" />

       <io.gloxey.cfv.CFCheckBox
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:text="Painting In The Sun Light"
       android:textSize="30sp"
       app:font_name="@string/painting_in_the_sun_light" />
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.