2015-12-17 16 views
9

Opracowałem niestandardową klawiaturę z Androidem. Muszę zmienić styl czcionki mojego tekstu wyjściowego, który jest faktycznie drukowany przy użyciu Unicodes.Czy mogę zmienić czcionkę wyjściową niestandardowej klawiatury systemu Android?

Jak zmienić styl czcionki w wynikach tekstowych mojej klawiatury w dowolnym miejscu w urządzeniu bez konieczności zmiany domyślnej czcionki urządzenia?

Czcionka również nie znajduje się na urządzeniu z Androidem, więc musimy ukryć czcionkę zewnętrznie od tej samej aplikacji, która tworzy klawiaturę.

Odpowiedz

4

zmiana stylu czcionki wewnątrz aplikacji.

utworzyć prostą klasę o nazwie

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(); 
    } 
    } 
} 

teraz utworzyć inną klasę, aby zastąpić czcionki o nazwie

Zastosowanie

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");*/ 
    } 
} 

teraz dodać czcionki do stylu w android pliku stylu w folderze wartości

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

Na ostatniej wzmianki nazwy aplikacji na androida pliku manifestu wewnątrz tagu aplikacji

android:name=".Application" 

To będzie działać na zmiany użytkownik dostarczył czcionkę do projektu lub aplikacji Android.

+1

Ta odpowiedź działa, ale muszę zmienić czcionkę poza aplikacją. –