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.