Saya ingin menggambar teks ke cat. Bagaimana cara menggambarnya dengan font khusus ( ex Helvetica ) dan juga tebal? Saya lebih suka menggunakan font sistem dan bukan membuatnya dari aset. Terima kasih.
ya, saya perlu cat untuk mengatur beberapa gaya ...
Buda Gavril
Cara setting font sesuai locale, misalnya untuk bahasa inggris kita ingin menggunakan arial.ttf dan untuk korea saya ingin menggunakan gothic_B.ttf. Bagaimana mungkin dengan cat di atas kanvas di android
Dwivedi Ji
@DwivediJi: Sudahkah Anda mencoba mempostingnya sebagai pertanyaan StackOverflow, daripada mengomentari pertanyaan orang lain?
Michael Scheper
Jawaban:
167
Jika yang Anda maksud dengan "font khusus" adalah font yang Anda berikan sebagai aset, kode berikut harus berfungsi:
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 belum diinstal, tetapi saya telah menggunakan beberapa font yang diinstal untuk membandingkan. Jika saya menggunakan font dari aset, apakah Anda tahu cara menetapkan tebal?
@TonythePony kode Anda tidak berfungsi untuk saya. Jenis huruf fontFace = Jenis huruf.createFromAsset (getAssets (), "font / comic.TTF"); Typeface face = Typeface.create (fontFace, Typeface.BOLD); Cat cat = Cat baru (); paint.setTextAlign (Paint.Align.CENTER); paint.setColor (Color.WHITE); paint.setTextSize (10); paint.setTypeface (wajah); paint.setFlags (Paint.ANTI_ALIAS_FLAG);
Dwivedi Ji
1
Apakah kamu sudah mencobanya getContext().getAssets()?
Wesley
2
Typeface.DEFAULT_BOLDmemberi saya masalah juga tetapi beralih ke Typeface.BOLDbekerja
CrandellWS
29
Jika Anda menggunakan Font baru Android dalam XML untuk font Anda, maka untuk mendapatkan jenis huruf yang digunakan untuk paint, Anda dapat menggunakan:
val customTypeface = ResourcesCompat.getFont(context, R.font.myfont)
atau jika API Android min Anda> = 26
val customTypeface = resources.getFont(R.font.myfont)
Canvas
?Jawaban:
Jika yang Anda maksud dengan "font khusus" adalah font yang Anda berikan sebagai aset, kode berikut harus berfungsi:
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);
sumber
Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD)
.getContext().getAssets()
?Typeface.DEFAULT_BOLD
memberi saya masalah juga tetapi beralih keTypeface.BOLD
bekerjaJika Anda menggunakan Font baru Android dalam XML untuk font Anda, maka untuk mendapatkan jenis huruf yang digunakan untuk paint, Anda dapat menggunakan:
val customTypeface = ResourcesCompat.getFont(context, R.font.myfont)
atau jika API Android min Anda> = 26
val customTypeface = resources.getFont(R.font.myfont)
Kemudian untuk menerapkannya ke objek cat Anda:
mTextPaint.typeface = customTypeface
Untuk info lebih lanjut, lihat https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml#fonts-in-code
sumber
Gunakan ini untuk kelas cat:
Paint paint = new Paint(); paint.setTypeface(Typeface.create("Arial",Typeface.ITALIC));
sumber
Jika Anda sudah memiliki font yang sedang digunakan dan ingin menggunakan versi yang tebal, Anda dapat melakukannya.
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);
Saya menggunakan jawaban di atas, tetapi modifikasi ini perlu bagi saya - jadi saya pikir saya akan menyebutkannya
sumber
Jika Anda ingin menggunakan font dari resource (Kotlin):
val textPaint = TextPaint() textPaint.typeface = resources.getFont(R.font.font_name)
Ini mungkin tidak terkait dengan pertanyaan, tetapi inilah yang saya cari - mungkin seseorang juga membutuhkannya.
sumber