2015-12-17 15 views
9

Ho sviluppato una tastiera personalizzata Android. Ho bisogno di cambiare lo stile del carattere del mio testo di output che viene effettivamente stampato usando gli unicodes.Posso cambiare il font di uscita di una tastiera personalizzata Android?

Come posso modificare lo stile del carattere del testo della tastiera in qualsiasi punto del dispositivo senza dover cambiare il carattere predefinito del dispositivo?

Il carattere non è anche nel dispositivo Android, quindi dobbiamo privare il font esternamente dalla stessa applicazione che sta sviluppando la tastiera.

risposta

4

modifica dello stile del carattere all'interno dell'applicazione.

creare una semplice classe denominata

FontOverride

import java.lang.reflect.Field; 
import android.content.Context; 
import android.graphics.Typeface; 

public final class FontsOverride { 

public static void setDefaultFont(Context context, 
     String staticTypefaceFieldName, String fontAssetName) { 
    final Typeface regular = Typeface.createFromAsset(context.getAssets(), 
      fontAssetName); 
    replaceFont(staticTypefaceFieldName, regular); 
} 

protected static void replaceFont(String staticTypefaceFieldName, 
     final Typeface newTypeface) { 
    try { 
     final Field staticField = Typeface.class 
       .getDeclaredField(staticTypefaceFieldName); 
     staticField.setAccessible(true); 
     staticField.set(null, newTypeface); 
    } catch (NoSuchFieldException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
    } 
} 

ora creare un'altra classe per ignorare i caratteri di nome

Applicazione

public final class Application extends android.app.Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     FontsOverride.setDefaultFont(this, "DEFAULT", "fonts/GeezEdit.ttf"); 
     FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/GeezEdit.ttf"); 
     /*FontsOverride.setDefaultFont(this, "MONOSPACE", "MyFontAsset2.ttf"); 
     FontsOverride.setDefaultFont(this, "SERIF", "MyFontAsset3.ttf"); 
     FontsOverride.setDefaultFont(this, "SANS_SERIF", "MyFontAsset4.ttf");*/ 
    } 
} 

ora aggiungere questo tipo di carattere per lo stile nel file di stile Android alla cartella valori

<item name="android:typeface">monospace</item> 

Infine menzione il nome dell'applicazione in file di manifest di Android all'interno del tag applicazione

android:name=".Application" 

Questo funziona al cambiamento l'utente ha fornito il carattere al progetto o all'applicazione Android.

+1

questa risposta funziona ma ho bisogno di cambiare il carattere all'esterno dell'applicazione. –

Problemi correlati