自定义字体不适用于Android的每个位置

时间:2016-04-01 08:14:29

标签: android android-fonts

对于我正在构建的应用程序,我现在使用自定义字体。 在大多数手机上,自定义字体工作正常。

但是在某些手机上,字体并没有覆盖所有的文字视图,我现在绝对无能为力,特别是除了在黑色区域外它无处不在

我想要的结果:

HTC one mini 2, Android 4.4.2

我得到的结果:

Huawei Y300, Android 4.1.1

Unknown model ,Android 5.1

守则:

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

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>

2 个答案:

答案 0 :(得分:0)

看看这个很棒的库,它的效果非常好: https://github.com/chrisjenx/Calligraphy

答案 1 :(得分:0)

看起来所有EMUI设备都阻止了所有更改字体的可用性。 ( 我试图找到解决方案如何更改字体,并使用将文本写入画布,以及相同的结果。尽管我设置了自己的TzpeFace,但仅设置了默认字体。

我对这个结果不太满意。