我正在开发一个记事本应用程序,我想使用我的自定义字体,我正在遵循此代码。
Typeface barType = Typeface.createFromAsset(getApplicationContext().getAssets(),"font/CaviarDreams.ttf");
subject.setTypeface(barType);
但是,我不想使用此代码,因为我必须为每个textview或edittext编写此代码 有没有办法轻松搞定?
答案 0 :(得分:0)
你必须继承TextView
/ EditText
并在xml中使用你的子类
private void init() {
if (!isInEditMode()) {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "font/CaviarDreams.ttf");
setTypeface(tf);
}
}
并从您的自定义init()
/ TextView
EditText
方法
答案 1 :(得分:0)
您需要继承EditText并在其构造函数集字体
中例如:
import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.EditText;
public class EditTextWithFont extends EditText {
public EditTextWithFont(Context c) {
super(c);
init();
}
public EditTextWithFont(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public EditTextWithFont(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
if (!isInEditMode()) {
Typeface barType = Typeface.createFromAsset(getApplicationContext().getAssets(),"font/CaviarDreams.ttf");
setTypeface(barType);
}
}
}
您可以为textview和按钮
创建类似的类答案 2 :(得分:0)
Roboto light
和TextView
类的全球Button
。
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
<item name="android:buttonStyle">@style/RobotoButtonStyle</item>
</style>
<style name="RobotoTextViewStyle" parent="android:Widget.TextView">
<item name="android:fontFamily">sans-serif-light</item>
</style>
<style name="RobotoButtonStyle" parent="android:Widget.Holo.Button">
<item name="android:fontFamily">sans-serif-light</item>
</style>
只需从列表themes.xml
中选择所需的样式,然后根据原始样式创建自定义样式。最后将样式应用为应用程序的主题。
<application
android:theme="@style/AppTheme" >
</application>
答案 3 :(得分:0)
public static void setFont(final Context context, final View v) {
try {
if (v instanceof ViewGroup) {
ViewGroup vg = (ViewGroup) v;
for (int i = 0; i < vg.getChildCount(); i++) {
View child = vg.getChildAt(i);
overrideFonts(context, child);
}
} else if (v instanceof TextView ) {
((TextView) v).setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/helvetica.ttf"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
在实用程序类中使用此方法并将父视图作为参数传递,它将使用您的字体更新所有文本视图
例如
View parent = (View)findViewById(R.id.parent);
Util.setFont(this,parent);