android встановив власний шрифт на фарбу


91

Я хочу намалювати текст на фарбі. Як намалювати його за допомогою спеціального шрифту ( напр. Helvetica ) та жирним шрифтом? Я б вважав за краще використовувати системний шрифт, а не створювати його з активів. Дякую.


"фарба": Ви маєте на увазі Canvas?
Тоні Поні,

так, мені потрібна фарба, щоб задати деякі стилі ...
Буда Гаврил

Як встановити шрифт відповідно до мови, наприклад, для англійської ми хочемо використовувати arial.ttf, а для корейської - gothic_B.ttf. Як це можливо за допомогою фарби на полотні в андроїді
Dwivedi Ji

@DwivediJi: Ви намагалися опублікувати це як запитання StackOverflow, а не як коментар до чужого питання?
Майкл Шепер

Відповіді:


164

Якщо під "спеціальним шрифтом" ви маєте на увазі шрифт, який ви надаєте як актив, повинен працювати наступний код:

Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); 
Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD)
Paint paint = new Paint();
paint.setTypeface(bold);
canvas.drawText("Sample text in bold",0,0,paint);

Helvetica не встановлено, але для порівняння я використав деякі встановлені шрифти. Якщо я використовую шрифт із ресурсів, чи маєте ви уявлення про те, як встановити жирний шрифт?
Буда Гаврил

6
Спробуйте: Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD).
Тоні Поні

2
@TonythePony Ваш код для мене не працює. Шрифт fontFace = Typeface.createFromAsset (getAssets (), "шрифти / comic.TTF"); Шрифт шрифта = Шрифт.create (fontFace, Шрифт.BOLD); Paint paint = new Paint (); paint.setTextAlign (Paint.Align.CENTER); paint.setColor (Color.WHITE); paint.setTextSize (10); paint.setTypeface (обличчя); paint.setFlags (Paint.ANTI_ALIAS_FLAG);
Dwivedi Ji

1
Ви пробували getContext().getAssets()?
Уеслі

2
Typeface.DEFAULT_BOLDдав мені питання , як добре , але зміни в Typeface.BOLDпрацював
CrandellWS

26

Якщо ви використовуєте нові шрифти Android в XML для своїх шрифтів, то для отримання шрифта, який використовується для фарби, ви можете використовувати:

val customTypeface = ResourcesCompat.getFont(context, R.font.myfont)

або якщо ваш мінімальний API для Android> = 26

val customTypeface = resources.getFont(R.font.myfont)

Потім застосувати його до об’єкта фарби:

mTextPaint.typeface = customTypeface

Для отримання додаткової інформації перейдіть за посиланням https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml#fonts-in-code


16

Використовуйте це для класу фарби:

 Paint paint = new Paint();
   paint.setTypeface(Typeface.create("Arial",Typeface.ITALIC));

9

Якщо ви вже використовуєте шрифт і хочете використовувати жирну версію цього, ви можете це зробити.

currentPainter = new Paint(Paint.ANTI_ALIAS_FLAG);
currentPainter.setColor(Color.WHITE);
currentPainter.setTextSize(Utils.sp2px(getResources(), 14)); // set font size
Typeface currentTypeFace =   currentPainter.getTypeface();
Typeface bold = Typeface.create(currentTypeFace, Typeface.BOLD);
currentPainter.setTypeface(bold);

Я використав відповідь вище, але ця модифікація була для мене необхідною - тому я просто подумав, що згадаю про це


1

Якщо ви хочете використовувати шрифт із ресурсів (Kotlin):

val textPaint = TextPaint()
textPaint.typeface = resources.getFont(R.font.font_name)

Це може не мати відношення до питання, але це те, що я шукав - можливо, це комусь теж знадобиться.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.