Статьи

Android TextView с пользовательскими шрифтами

При разработке приложения для 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 Хавьера Мансано в блоге Хавьера Мансано в блоге.