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.
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.
Câu trả lời:
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);
Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD)
.
getContext().getAssets()
?
Typeface.DEFAULT_BOLD
đã cho tôi vấn đề cũng nhưng thay đổi để Typeface.BOLD
làm việc
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
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ó
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ó.
Canvas
?