android đặt phông chữ tùy chỉnh thành sơn


91

Tôi muốn vẽ văn bản vào sơn. Làm thế nào để vẽ nó với một phông chữ tùy chỉnh ( ví dụ như Helvetica ) và cũng in đậm? Tôi yêu cầu sử dụng phông chữ hệ thống chứ không phải tạo nó từ nội dung. Cảm ơn.


"paint": Ý bạn là Canvas?
Tony the Pony

vâng, tôi cần sơn để thiết lập một số phong cách ...
Buda Gavril

Cách đặt phông chữ theo ngôn ngữ, ví dụ đối với tiếng Anh, chúng tôi muốn sử dụng arial.ttf và đối với Hàn Quốc, tôi muốn sử dụng gothic_B.ttf. Làm thế nào nó là posible bằng sơn trên vải trong android
Dwivedi Ji

@DwivediJi: Bạn đã thử đăng câu hỏi đó dưới dạng câu hỏi của StackOverflow, thay vì nhận xét về câu hỏi của người khác chưa?
Michael Scheper

Câu trả lời:


164

Nếu theo "phông chữ tùy chỉnh", bạn có nghĩa là phông chữ mà bạn đang cung cấp làm nội dung, thì mã sau sẽ hoạt động:

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 chưa được cài đặt, nhưng tôi đã sử dụng một số phông chữ đã cài đặt để so sánh. Nếu tôi đang sử dụng phông chữ từ nội dung, bạn có biết cách đặt chữ đậm không?
Buda Gavril

6
Hãy thử: Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD).
Tony the Pony

2
@TonythePony Mã của bạn không phù hợp với tôi. Typeface fontFace = Typeface.createFromAsset (getAssets (), "fonts / comic.TTF"); Typeface face = Typeface.create (fontFace, Typeface.BOLD); Paint paint = new Paint (); paint.setTextAlign (Sơn.Align.CENTER); paint.setColor (Màu.WHITE); paint.setTextSize (10); paint.setTypeface (khuôn mặt); paint.setFlags (Paint.ANTI_ALIAS_FLAG);
Dwivedi Ji

1
Bạn đã thử getContext().getAssets()?
Wesley

2
Typeface.DEFAULT_BOLDđã cho tôi vấn đề cũng nhưng thay đổi để Typeface.BOLDlàm việc
CrandellWS

26

Nếu bạn đang sử dụng Phông chữ mới của Android ở dạng XML cho phông chữ của mình, thì để có được kiểu chữ được sử dụng cho sơn, bạn có thể sử dụng:

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

hoặc nếu API Android tối thiểu của bạn> = 26

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

Sau đó, để áp dụng nó vào đối tượng sơn của bạn:

mTextPaint.typeface = customTypeface

Để biết thêm thông tin, hãy xem https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml#fonts-in-code


16

Sử dụng cái này cho lớp sơn:

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

9

Nếu bạn đã có một phông chữ đang sử dụng và muốn sử dụng phiên bản in đậm của phông chữ đó, bạn có thể thực hiện việc này.

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

Tôi đã sử dụng câu trả lời ở trên, nhưng sửa đổi này là cần thiết đối với tôi - vì vậy tôi chỉ nghĩ rằng tôi sẽ đề cập đến nó


1

Nếu bạn muốn sử dụng một phông chữ từ tài nguyên (Kotlin):

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

Điều này có thể không liên quan đến câu hỏi, nhưng đây là điều tôi đang tìm kiếm - có lẽ ai đó cũng sẽ cần nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.