2016-04-01 10 views
3

Für eine App, die ich gerade baue, benutze ich eine benutzerdefinierte Schriftart. Auf den meisten Telefonen funktioniert die benutzerdefinierte Schrift gut.Benutzerdefinierte Schriftart funktioniert nicht überall wo Android

Aber auf einigen der Schriftart des Telefons wird alle Textviews nicht überschreiben, ich bin rechts absolut ahnungslos jetzt besonders es

Das Ergebnis möchte ich überall, außer im schwarzen Bereich arbeitet:

HTC one mini 2, Android 4.4.2

Das Ergebnis erhalte ich:

Huawei Y300, Android 4.1.1

Unknown model ,Android 5.1

Der Code:

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

die XML:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:id="@+id/imageViewNewestArticleImage" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scaleType="centerCrop" 
     android:background="@android:color/black" 
     android:src="@drawable/emptychatuser"/> 

    <TextView 
     android:id="@+id/textViewNewestArticleTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/sampleTitle" 
     android:layout_gravity="bottom" 
     android:textAllCaps="true" 
     android:textColor="@android:color/white" 
     android:textSize="25sp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="20dp" 
     android:padding="5dp" /> 

</FrameLayout> 
+0

hm irgendwelche anderen Anpassungen Schriftart an anderer Stelle in Ihrem XML? –

+0

Es ist nur eine normale Textansicht der einzige Unterschied zwischen diesem und allen anderen Textansichten ist, dass die Hintergrundfarbe ist anders –

+0

Warum verwenden Sie Reflexion für die Änderung der Farbe? –

Antwort

0

einen Blick auf dieses fantastische Bibliothek nehmen, es ist wirklich gut funktioniert: https://github.com/chrisjenx/Calligraphy

+0

Ich habe das versucht, aber ohne Erfolg :( –

+0

Was war das Problem? – Phoenix

+0

Es tat genau das gleiche wie das Stück Code, den ich verwendet habe, um die Schriftart zu setzen. Die gleiche Textansicht hat ihre Standardschriftart beibehalten –