是否可以在Android应用程序中设置自定义字体?
我尝试了发布here的内容,但我不知道我的extends Application
课程在哪里......
任何帮助?
修改
我尝试了以下内容:
添加一个从Application
从我的AndroidManifest.xml
。
我按照自己的风格添加了它。
MyApp.java:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
FontsOverride.setDefaultFont(this, "DEFAULT", "raleway_regular.ttf");
// This FontsOverride comes from the example I posted above
}
}
的AndroidManifest.xml:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:name=".MyApp"
android:theme="@style/AppTheme">
....
styles.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:fontFamily">default</item>
</style>
但我的字体仍然没有变换......任何想法?
然后调用MyApp
类。但对我的字体没有影响...
EDIT2:我意识到在为按钮设置自定义样式后,我的按钮会应用自定义字体。这是我的自定义按钮样式:
<style name="MyButtonStyle" parent="Widget.AppCompat.Button">
<item name="textAllCaps">false</item>
<item name="android:textAllCaps">false</item>
</style>
以下是现在的样子:
所以:我的按钮正在应用样式,而不是TextView
。有关为什么我的自定义字体没有应用于应用程序中的所有项目的任何想法?
答案 0 :(得分:1)
在android中有一个自定义字体的图书库:custom fonts
这是一个如何使用它的示例。
在gradle中你需要把这一行
compile 'uk.co.chrisjenx:calligraphy:2.1.0'
然后创建一个扩展应用程序的类写一个代码`public class App extends Application { @覆盖 public void onCreate(){ super.onCreate();
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("your font path")
.setFontAttrId(R.attr.fontPath)
.build()
);
}
}`
并且在activity类中将此方法放在onCreate之前。
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
并且清单文件中的最后一件事就是这样写的。
<application
android:name=".App"
它会将整个活动更改为您的字体!它简单干净!
答案 1 :(得分:1)
试试这段代码。但您需要在findViewByIdMethod(int id)
的代码中初始化TextView或Button。
TextView yourTextView = findViewById(R.id.YourTextViewId);
Typeface font = Typeface.createFromAsset(getActivity().getAssets(),"raleway_regular.ttf");
yourTextView.setTypeface(font);
答案 2 :(得分:0)
如果要为整个应用程序设置字体,请按照此方法https://stackoverflow.com/a/8854794/3718505。
但它仅适用于静态内容。