android mengatur font khusus menjadi cat


92

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.


"cat": Maksud Anda Canvas?
— Tony the Pony

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?
— Buda Gavril

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

2
@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)

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


17

Gunakan ini untuk kelas cat:

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

9

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


1

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.