android özel yazı tipini boyaya ayarla


94

Bir boyaya bir metin çizmek istiyorum. Özel bir yazı tipiyle ( eski Helvetica ) ve ayrıca kalın olarak nasıl çizilir ? Bir sistem fontu kullanmayı ve onu varlıklardan oluşturmamayı tercih ederim. Teşekkürler.


"boya": Bunu mu demek istiyorsun Canvas?
— Tony the Pony

evet, bazı stilleri ayarlamak için boyaya ihtiyacım var ...
— Buda Gavril

Yazı tipini yerel ayara göre nasıl ayarlayabiliriz, örneğin İngilizce için arial.ttf kullanmak istiyoruz ve kore dili için gothic_B.ttf kullanmak istiyorum. Android'de tuval üzerine boya ile nasıl mümkün
— Dwivedi Ji,

@DwivediJi: Bunu başka birinin sorusu üzerine yorum yapmak yerine StackOverflow sorusu olarak göndermeyi denediniz mi?
— Michael Scheper

Yanıtlar:


169

"Özel yazı tipi" derken, bir öğe olarak sağladığınız bir yazı tipini kastediyorsanız, aşağıdaki kod çalışmalıdır:

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 yüklü değil, ancak karşılaştırmak için bazı yüklü yazı tiplerini kullandım. Varlıklardan bir font kullanıyorsam, nasıl kalın yapılacağına dair bir fikriniz var mı?
— Buda Gavril

6
Deneyin: Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD).
— Tony the Pony

2
@TonythePony kodunuz benim için çalışmıyor. Yazı biçimi fontFace = Typeface.createFromAsset (getAssets (), "fontlar / comic.TTF"); Yazı biçimi yüzü = Yazı biçimi.create (fontFace, Typeface.BOLD); Boya boyası = yeni Boya (); paint.setTextAlign (Paint.Align.CENTER); paint.setColor (Color.WHITE); paint.setTextSize (10); paint.setTypeface (yüz); paint.setFlags (Paint.ANTI_ALIAS_FLAG);
— Dwivedi Ji

1
Denedin getContext().getAssets()mi
— Wesley

2
Typeface.DEFAULT_BOLDbana da sorunlar verdi ama Typeface.BOLDişe yaradı
— CrandellWS

32

Yazı tipleriniz için Android'in XML'deki yeni Yazı Tiplerini kullanıyorsanız, boyama için kullanılan yazı tipini almak için şunları kullanabilirsiniz:

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

veya minimum Android API'niz> = 26 ise

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

Ardından boya nesnenize uygulamak için:

mTextPaint.typeface = customTypeface

Daha fazla bilgi için https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml#fonts-in-code adresine bakın


18

Boya sınıfı için bunu kullanın:

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

9

Zaten kullanımda olan bir yazı tipiniz varsa ve bunun kalın bir versiyonunu kullanmak istiyorsanız bunu yapabilirsiniz.

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);

Yukarıdaki cevabı kullandım, ancak bu değişiklik benim için gerekliydi - bu yüzden bundan bahsetmeyi düşündüm


2

Kaynaklardan (Kotlin) bir yazı tipi kullanmak istiyorsanız:

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

Bu soruyla ilgili olmayabilir, ama aradığım şey buydu - belki birisinin de buna ihtiyacı olabilirdi.


Bu en basit çözümdür, ancak yalnızca SDK 26+ ile çalışır. Daha ResourcesCompat.getFont(context, R.font.font_name)eski Android sürümlerini hedeflerken de kullanabilirsiniz .
— Slav
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.