При разработке приложения для Android я обнаружил, что каждый раз, когда я пытался использовать собственный шрифт в TextView, я копировал одни и те же строки:
|
1
2
|
TextView textview = (TextView) findViewById(R.id.text);textview.setTypeface(...) |
Очевидно, что это ненужно и повторяется. Почему бы просто не создать собственный вид? И еще, почему бы не добавить шрифт через код XML?
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
public class CustomTextView extends TextView { private Context mContext; private String mFont; public CustomTextView(Context context) { super(context, null); mContext = context; init(); } public CustomTextView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; TypedArray a = context.getTheme().obtainStyledAttributes( attrs, R.styleable.CustomButtom, 0, 0); try { mFont = a.getString(R.styleable.CustomButtom_font); } finally { a.recycle(); } init(); } private void init() { if (mFont != null) { setTypeface(FontsUtils.get(mFont)); } }} |
Нам просто нужно расширить из TextView и прочитать из набора атрибутов строку шрифта, объявленную в его стилевом ресурсе. Просто создайте файл attrs.xml (или используйте существующий) и добавьте следующее:
|
1
2
3
|
<declare-styleable name="CustomTextview"> <attr name="font" format="string" /></declare-styleable> |
Теперь вы можете объявить в своем XML-макете так:
|
01
02
03
04
05
06
07
08
09
10
|
<LinearLayout android:id="@+id/comments" android:layout_width="match_parent" android:layout_height="wrap_content" > <com.parkuik.android.ui.CustomTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/no_comments" /></LinearLayout> |
Ссылка: Android TextView с пользовательскими шрифтами от нашего партнера JCG Хавьера Мансано в блоге Хавьера Мансано в блоге.