Подтвердить что ты не робот

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

Я хочу использовать внешние шрифты в своем приложении. Я попытался добавить новые шрифты с помощью управляющих активами, но это не сработало.

Typeface face;

face = Typeface.createFromAsset(getAssets(), "font.otf");

textview.setTypeface(face);

но текст не показывался...

Справка plz.

4b9b3361

Ответ 1

AFAIK, Android не поддерживает OpenType. Вместо этого используйте шрифт TrueType.


UPDATE: Очевидно, OpenType теперь поддерживается, по крайней мере, несколько. Первоначально он не поддерживался, поэтому вам нужно тщательно протестировать шрифт на любых версиях Android, поддерживаемых вашим приложением.

Ответ 2

Чтобы легко получить доступ к нашему шрифту, нам необходимо связать его с нашим приложением таким образом, чтобы наш код мог впоследствии загрузить его. Чтобы сделать это, мы создаем папку Fonts в наших активах direct

Это может быть ваш .xml

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
    android:id="@+id/DefaultFontText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="30sp"
    android:text="Here is some text." />
<TextView
    android:id="@+id/CustomFontText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="30sp"
    android:text="Here is some text.">
    </TextView>

Запишите следующий код в свой .java класс

Typeface tf = Typeface.createFromAsset(getAssets(),
            "fonts/BPreplay.otf");
    TextView tv = (TextView) findViewById(R.id.CustomFontText);
    tv.setTypeface(tf);

Ответ 3

Android поддерживает OTF (я не уверен, из какой версии SDK, но он определенно работает с 1.6), я некоторое время использовал шрифт OTF пишущей машинки, но рендеринг нигде не был столь же точным, как и версия TTF, которую я закончил (через онлайн-конвертер шрифтов). Базовая линия была повсюду (некоторые буквы были на 2 пикселя выше других), а на телефонах LDPI, таких как HTC Wildfire, проблема значительно увеличилась из-за больших пикселей.

Ответ 4

У меня была такая же проблема. Мой шрифт тоже не работал в андроиде, но мне нужно было работать. Используя редактор шрифтов, я скопировал символы из моего шрифта в шрифт, который поставляется с примером FontSampler от Android-src-2_1. Он отлично работал.

Хотя я буду признавать, что мой метод был сомнительным с точки зрения интеллектуальной собственности, я фактически не использовал оригинальный шрифт, поскольку все символы были заменены, и все ссылки на старый шрифт, который также был заменен, Я попробовал "посмотреть" на то, как были определены два шрифта, но совпадение всех совпадений шрифтов тоже не срабатывало. Поэтому в ned я использовал скелет исходного шрифта в качестве шаблона для нового шрифта.

Ответ 5

android поддерживает как форматы otf, так и ttf, я испытал их оба.

tv3 = (TextView)findViewById(R.id.tv1);
    Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/TRAJANPRO-BOLD.OTF");
    tv3.setTypeface(typeFace);

это шаг, который я использовал для английского и локального языков

Ответ 6

Использовать Fontinator он поддерживает стенд OTF и TTF Fonts

Это Android-библиотека, облегчающая использование пользовательских шрифтов.

https://github.com/svendvd/Fontinator

Ответ 7

Вы можете использовать простую стороннюю библиотеку EasyFonts, чтобы задать набор настраиваемых шрифтов для вашего TextView. Используя эту библиотеку, вам не придется беспокоиться о загрузке и добавлении шрифтов в папку assets/fonts. Также о создании объекта Typeface.

Он предоставляет следующие грани шрифтов.

  • Roboto
  • Droid Serif
  • Droid Robot
  • Свобода
  • Fun Raiser
  • Android Nation
  • Зеленый авокадо
  • Признание

Просто:

TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setTypeface(EasyFonts.robotoThin(this));