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

Android Typeface createFromAsset

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

Я использую 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 через мою активность, но когда я это делаю, он не меняет шрифт.

4b9b3361

Ответ 1

Вы можете использовать ваш метод View getContext() для получения текущего Context, а затем использовать его для получения активов:

Typeface font = Typeface.createFromAsset(getContext().getAssets(), "robotobold.ttf");

Ответ 2

Прежде всего, вам нужно сохранить свою папку assets внутри project, а не внутри src/main. Затем создайте папку под именем fonts внутри assets. затем вставьте в него конкретный шрифт ttf files. Вы можете использовать шрифт шрифта в кодировке, например:

Typeface type = Typeface.createFromAsset(getAssets(),"fonts/filename.ttf");
textview.setTypeface(type);

Ответ 3

создала папку src/main/assets и разместила файлы шрифтов там.

в деятельности

Typeface font = Typeface.createFromAsset(getAssets(),  "Mukta-Regular.ttf");
tv.setTypeface(font);

в фрагменте

Typeface.createFromAsset(getActivity().getAssets(), "Mukta-Regular.ttf");
tv.setTypeface(font);

Ответ 4

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

Я вызываю класс 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());

Ответ 5

Вы должны поместить свою папку с ресурсами внутри папки "Проект" и не в папку "src" . Вы разместили свой шрифт в "src/main/assets/robotobold.ttf" , поэтому он не работает. Вам нужно разместить его так: "/assets/robotobold.ttf".

Ответ 6

    Typeface robo = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Roboto-Thin.ttf");

Ответ 7

Моя ошибка заключалась в добавлении строки

Typeface mFont = Typeface.createFromAsset(this.getAssets(), "abc.ttf");

before onCreate()

Ответ 8

Typeface font = Typeface.createFromAsset(NewHomePageActivity.this.getAssets(), "Poppins_Bold.ttf");
        TextView mTextViewHeading = findViewById(R.id.activity_home_page_textView_heading);
        mTextViewHeading.setTypeface(font);