Colocando fontes customizadas no Android
Como você já deve saber, as fontes disponíveis no Android são bastante limitadas, se resumindo as seguintes opções:
android:fontFamily="sans-serif" // roboto regular
android:fontFamily="sans-serif-light" // roboto light
android:fontFamily="sans-serif-condensed" // roboto condensed
android:fontFamily="sans-serif-thin" // roboto thin (android 4.2)
android:fontFamily="sans-serif-medium" // roboto medium (android 5.0)
Mas via código podemos inserir outras fontes, sendo que o android aceita fontes no formato ttf, então se sua fonte estiver em outro formato você deve convertê-la para este, o que pode ser feito no site Everything Fonts.
Com as fontes em mão, devemos colocá-las no projeto dentro da pasta assets, recomendo criar outra pasta dentro dela chamada fontes para melhor organização, ficando assim assets/fontes/nome_fonte.ttf
.
Agora devemos criar um objeto Typeface
.
Typeface font = Typeface.createFromAsset( getAssets() , "fontes/IndieFlower.ttf");
Lembrando que nossa fonte IndieFlower.ttf
dentro da pasta assets
por isso utilizamos o método createFromAsset
, que recebe o AssetManager
e o caminho da fonte dentro dele. Se quisermos utilizar uma fonte que está dentro do SDCard por exemplo devemos utilizar outro método.
String fontPath = Environment.getExternalStorageDirectory()+"/Gabrielle.ttf";
Typeface font = Typeface.createFromFile( fontPath );
Lembrando que estamos acessando o SDCard então nossa aplicação deve ter permissão de acesso, para isso colocamos o código abaixo no nosso AndroidManifest.xml
.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Agora com o objeto Typeface
basta inserir via programação no componente desejado.
TextView text = (TextView) findViewById(R.id.text);
text.setTypeface(font);
Lembrando que podemos utilizar em outros componentes EditText
, Button
, etc.