Có một phương thức trong lớp Paint: Paint.getTextBounds() trả về Rect
bị chiếm bởi một số văn bản. Nhưng theo câu trả lời this nó trả về một cái gì đó khác nhau sau đó chiều rộng/chiều cao của TextView.Làm thế nào để nhanh chóng có được chiều rộng và chiều cao của TextView sử dụng Paint.getTextBounds()?
Q1: Có cách nào để có chiều rộng và chiều cao của TextView sử dụng Rect
được trả lại bởi Paint.getTextBounds() không?
Lưu ý, tôi cần biết chiều rộng/chiều cao chính xác. Tôi sẽ rất vui khi biết giới hạn trên của rect
với lỗi có thể xảy ra khoảng 2-3%, nhưng nó KHÔNG phải lớn hơn (và phải hoạt động cho bất kỳ điện thoại nào không phụ thuộc vào độ phân giải màn hình và mật độ điểm ảnh) sau đó TextView bounds
Q2: Có phương pháp NHANH nào khác để xác định chiều rộng và chiều cao của một số văn bản với textSize được chỉ định không?
Tôi biết, chiều rộng có thể được xác định bởi Paint.measureText(), nhưng điều này không trả về chiều cao. Chiều cao có thể được xác định bằng cách tạo mới StaticLayout
với văn bản và sau đó gọi số StaticLayout.getHeight(), nhưng điều này quá chậm. Tôi cần một cái gì đó nhanh hơn.
Các nền cho tất cả những điều này đang thực hiện AutoFitTextView
mà sẽ automaticaly phù hợp văn bản bên trong giới hạn của nó bằng cách cập nhật mới hoặc xuống rộng kích thước văn bản, và nó nên làm điều này một cách nhanh chóng, vì sẽ có nhiều như vậy AutoFitTextView
s thay đổi động rất nhanh.
Hai phương pháp này có được coi là hoạt động đúng không? Bởi vì "end" không được định nghĩa, và tham số thứ tư trong lời gọi getTextBounds là "Rect bounds". Không nên dòng khá looke như: "paint.getTextBounds (văn bản, 0, text.length(), giới hạn);" – ghost23
vâng, đây là lỗi đánh máy :) – Prizoff
Và nguyên nhân, hai phương pháp này nên được kết hợp thành một. Ngoài ra, lưu ý rằng 'bounds.left + bounds.width()' thực sự giống với 'bounds.right' – Prizoff