对于我正在构建的应用程序,我现在使用自定义字体。 在大多数手机上,自定义字体工作正常。
但是在某些手机上,字体并没有覆盖所有的文字视图,我现在绝对无能为力,特别是除了在黑色区域外它无处不在
我想要的结果:
我得到的结果:
守则:
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>
答案 0 :(得分:0)
看看这个很棒的库,它的效果非常好: https://github.com/chrisjenx/Calligraphy
答案 1 :(得分:0)
看起来所有EMUI设备都阻止了所有更改字体的可用性。 ( 我试图找到解决方案如何更改字体,并使用将文本写入画布,以及相同的结果。尽管我设置了自己的TzpeFace,但仅设置了默认字体。
我对这个结果不太满意。