Ответ 1
Вы можете использовать ваш метод View
getContext()
для получения текущего Context
, а затем использовать его для получения активов:
Typeface font = Typeface.createFromAsset(getContext().getAssets(), "robotobold.ttf");
У меня есть пользовательский вид, который рисует текст на холсте. Я хочу изменить шрифт на шрифт, хранящийся в папке с ресурсами.
Я использую Android Studio, поэтому создал папку src/main/assets и разместил там файлы ttf.
Paint txt = new Paint()
Typeface font = Typeface.createFromAsset(getAssets(), "robotobold.ttf");
txt.setTypeface(font);
Проблема заключается в том, что Android Studio не распознает getAssets() внутри моего пользовательского представления, однако он распознает его внутри моей Activity. Я пробовал передавать Typeface через мою активность, но когда я это делаю, он не меняет шрифт.
Вы можете использовать ваш метод View
getContext()
для получения текущего Context
, а затем использовать его для получения активов:
Typeface font = Typeface.createFromAsset(getContext().getAssets(), "robotobold.ttf");
Прежде всего, вам нужно сохранить свою папку assets
внутри project
, а не внутри src/main
. Затем создайте папку под именем fonts
внутри assets
. затем вставьте в него конкретный шрифт ttf files
. Вы можете использовать шрифт шрифта в кодировке, например:
Typeface type = Typeface.createFromAsset(getAssets(),"fonts/filename.ttf");
textview.setTypeface(type);
создала папку src/main/assets и разместила файлы шрифтов там.
в деятельности
Typeface font = Typeface.createFromAsset(getAssets(), "Mukta-Regular.ttf");
tv.setTypeface(font);
в фрагменте
Typeface.createFromAsset(getActivity().getAssets(), "Mukta-Regular.ttf");
tv.setTypeface(font);
Чтобы повторно использовать шрифты в моих проектах, я создаю класс, полный типов шрифтовых методов, поэтому мне не нужно каждый раз создавать новый шрифт.
Я вызываю класс FontClass
, и в классе есть метод для каждого шрифта, который мне нужно использовать, например:
public static Typeface getOpenSansRegular(Context c){
return Typeface.createFromAsset(c.getAssets(), "OpenSans-Light.ttf");
}
Тогда я могу использовать их так:
TextView text = (TextView) findViewById(R.id.textview);
text.setTypeface(FontClass.getOpenSansRegular(getApplicationContext());
Вы должны поместить свою папку с ресурсами внутри папки "Проект" и не в папку "src" . Вы разместили свой шрифт в "src/main/assets/robotobold.ttf" , поэтому он не работает. Вам нужно разместить его так: "/assets/robotobold.ttf".
Typeface robo = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Roboto-Thin.ttf");
Моя ошибка заключалась в добавлении строки
Typeface mFont = Typeface.createFromAsset(this.getAssets(), "abc.ttf");
before onCreate()
Typeface font = Typeface.createFromAsset(NewHomePageActivity.this.getAssets(), "Poppins_Bold.ttf");
TextView mTextViewHeading = findViewById(R.id.activity_home_page_textView_heading);
mTextViewHeading.setTypeface(font);