Лучший способ назначить шрифт шрифта для просмотра текста

Интересно, каким будет лучший способ назначить гарнитуру шрифта для представления TextView? Лучше ли создать собственный класс TextView, который расширяет TextView, или использовать атрибут setTypeFace?


person Hamidreza    schedule 07.04.2015    source источник


Ответы (3)


создайте папку assets (src/main/assets/ в AndroidStudio) и создайте подпапку fonts, скопируйте в них свои шрифты

 Typeface tf = Typeface.createFromAsset(getAssets(),
    "fonts/youi.ttf");
 TextView tv = (TextView) findViewById(R.id.edit_t);
 tv.setTypeface(tf);
person Nikhil Verma    schedule 07.04.2015
comment
Я знаю это. Учтите, что у меня есть XML-файл элемента ListView, и внутри есть TextViews. И я хочу использовать пользовательские шрифты для каждого TextView, должен ли я отправлять шрифт в качестве входных данных для пользовательского класса адаптера, чтобы затем я мог назначить его с помощью кода, который вы упомянули? - person Hamidreza; 07.04.2015
comment
Да, назначать шрифты в getView(). - person Nikhil Verma; 07.04.2015
comment
И если у меня есть более одного типа шрифта, должен ли я отправить список шрифтов? Это лучший и самый простой способ? - person Hamidreza; 07.04.2015
comment
Будьте осторожны, так как существует известная проблема с createFromAsset. Вместо того, чтобы поддерживать свою ссылку, он пытается воссоздать шрифт при каждом вызове. Вероятно, вам следует кэшировать его, если вы планируете часто его использовать. - person Alex Kolpa; 07.04.2015
comment
@alex-kolpa Что именно ты имеешь в виду? Неправильно ли это в основной деятельности и отправлять список шрифтов адаптеру? fontList = новый ArrayList‹Typeface›(); fontList.add(Typeface.createFromAsset(getAssets(), fonts/gautami.ttf)); fontList.add(Typeface.createFromAsset(getAssets(), fonts/clash.ttf)); fontList.add(Typeface.createFromAsset(getAssets(), fonts/tekton_pro.otf)); - person Hamidreza; 07.04.2015
comment
Я знаю. Это хороший ответ. Но я хотел бы услышать больше от разных пользователей. Больше мнений, лучший результат. - person Hamidreza; 07.04.2015

Вот версия kotlin для этого

val openSansLight: Typeface by lazy { Typeface.createFromAsset(context, "font/os_light.ttf"); }
textView.typeface = openSansLight
person Kavin Varnan    schedule 15.11.2018

Шрифт теперь является частью ресурса приложения! Теперь вы можете использовать атрибут семейства шрифтов для изменения шрифта в xml. Создайте каталог ресурсов шрифта, и вы можете поместить туда файлы шрифтов.

android:fontFamily="@font/lobster"

Использование кода

val typeface = resources.getFont(R.font.myfont)
textView.typeface = typeface

См. официальную документацию. для большего

person Samuel Robert    schedule 15.11.2018