среда, 31 марта 2010 г.

Использование стороннего шрифта в TextView

В поставку Android входит всего 3 шрифта для использования программистами - Sans, Serif, Monospace, которые вы обычно устанавливаете через свойство android:typeface. Иногда возникает необходимость использовать сторонний шрифт, допустим DS-Digital Bold. Делается это довольно просто.

Вы должны положить ваш шрифт в папку проекта по следующему пути - assets/fonts, папка fonts не обязательна, можно положить непосредственно в assets.

Чтобы использовать этот шрифт для текста в TextView необходимо написать следующий код:
TextView tvName = (TextView) findViewById(R.id.tvName);
Typeface digitalFont = Typeface.createFromAsset(this.getAssets(), "fonts/digital.ttf");
tvName.setTypeface(digitalFont);
Результат показан на картинке ниже.

8 комментариев:

  1. Добрый день
    Немножко оффтоп - а существуют ли View для отображения иерархичных данных, т.е. аналог какого-нибудь TreeView. Если я правильно понял, есть возможность использовать два уровня вложенности (объект и его описание), а вот можно ли использовать произвольную вложенность.
    Я пытался найти инфу в инете, но всё, что удалось найти - разговоры на тему того, что Android расчитан на пальцы и маленькие дисплеи, и поэтому таких виджетов нет. Неужели это действительно так?

    ОтветитьУдалить
  2. Да два уровня можно за счте расширенного списка, а вот аналогов TreeView я не встречал, в Android обходятся и без него.

    ОтветитьУдалить
  3. Добрый день

    а как изменить font в AppWidget ?

    ОтветитьУдалить
  4. alex, если ты про размер шрифта в textview в виджете, то меняется так

    remoteView.setFloat(R.id.tvYourTextView, "setTextSize ", 12);

    ОтветитьУдалить
  5. Нет Максим, как использовать сторонний шрифт в AppWidget ?

    ОтветитьУдалить
  6. alex, вообще такое не возможно, но тут высказывают одно решение, но я не знаю как такое делать - http://groups.google.com/group/android-developers/browse_thread/thread/b3b0d0e540d3eecd

    ОтветитьУдалить
  7. Максим, когда требуется изменить шрифт текста на кнопках, как это можно провернуть?
    Пробую:

    View cardsButton = findViewById(R.id.GoToCards);
    Typeface oliver = Typeface.createFromAsset(this.getAssets(), "oliver.ttf");
    cardsButton.setTypeface(oliver);

    И логично, что на 3й строчке ошибка: The method setTypeface(Typeface) is undefined for the type View
    В саму кнопку TextView не засунешь, пытаться внешний шрифт установить в xml - тоже не получается:

    < Button
    android:id="@+id/GoToCards"
    ...
    android:typeface="@assets/oliver"
    / >

    Кстати, а как можно сразу в Layout устанавливать элементам свои шрифты?

    ОтветитьУдалить