Как правильно использовать шрифт в Android? Я вижу много примеров использования пользовательского тега XML для текстового представления. Я попытался установить в Java обычный текстовый вид, и он отлично работает, так в чем причина использования настраиваемых полей?
Android: правильный способ использования пользовательского шрифта в
Ответы (1)
При использовании пользовательского шрифта лучше всего добавить его в каталог /assets в вашем проекте. Достаточно легко сделать следующее:
TextView customTypefaceTextView = (TextView) findViewById(R.id.customTypefaceTextView);
Typeface customTypeface = Typeface.createFromAsset(getAssets(), "Custom_Typeface.ttf");
customTypefaceTextView.setTypeface(customTypeface);
Просто помните, что поиск ваших активов будет связан с текущим Context
, поэтому, если вы используете пользовательские шрифты в Fragment vs. Activity, вы захотите вызвать getActivity().getAssets()
вместо просто getAssets()
.
Это ссылка на краткий совет от: http://code.tutsplus.com/tutorials/customize-android-fonts--mobile-1601
Кроме того, может быть более практичным создать класс, который extends TextView
поможет вам получить более практическую реализацию пользовательского шрифта, который можно использовать для TextView
, к которым вы хотите добавить собственный шрифт, например:
public class CustomTitleTextView extends TextView {
private Context m_classContext = null;
private Typeface m_customTypeFace = null;
// Default Constructor
public CustomTitleTextView(Context context) {
super(context);
// TODO Auto-generated constructor stub
this.m_classContext = context;
createRobotoTitleTextView();
}
// Default Constructor
public CustomTitleTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
this.m_classContext = context;
createRobotoTitleTextView();
}
// Default Constructor
public CustomTitleTextView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
this.m_classContext = context;
createRobotoTitleTextView();
}
// Adds the Typeface to the TextView
private void createRobotoTitleTextView()
{
m_customTypeFace = Typeface.createFromAsset(m_classContext.getAssets(), "Roboto-Thin.ttf");
this.setTypeface(m_customTypeFace);
}
}
И тогда вы можете использовать это в XML в любом макете
<packagename.CustomTitleTextView
android:id="@+id/customTitleTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Обновить
Вот несколько способов, которыми я успешно реализовал пользовательские шрифты. Пример, показывающий, как добавить пользовательский TextView
через extends TextView
, а затем добавить его в XML не обязательно, он просто дает основу того, как создать ваш TextView
как повторно используемый объект, а не делать это динамически в вашем действии или фрагменте.
Удачи!
<packagename.CustomTitleTextView
`android:id=@+id/customTitleTextView` `android:layout_width=wrap_content` `android:layout_height=wrap_content/›` так зачем они мне нужны? у меня есть обычное текстовое представление, такое как ` ‹TextView android:text=@string/play android:textStyle=bold android:textColor=#fff android:textSize=@dimen/font2 android:layout_width=wrap_content android:layout_height=wrap_content/› `
- person user3553099; 20.04.2014