Tôi có một TextView hiển thị văn bản thay đổi và chạy thời gian. Tôi muốn sử dụng phương thức View.getLineCount() để xem có bao nhiêu dòng TextView chiếm và thực hiện các chức năng khác nhau cho phù hợp. Vấn đề là tôi cần phải xác định số lượng các dòng TextView mất trong cùng một phương pháp mà cần phải biết có bao nhiêu dòng nó mất. Tôi đã thử gọi View.invalidate() ở giữa hai cuộc gọi nhưng điều đó dường như không sửa chữa bất cứ điều gì. Tôi muốn đo số dòng mà không hiển thị chế độ xem nếu có thể nhưng nếu tôi phải hiển thị, tôi sẽ mở để thực hiện điều đó. Hãy cho tôi biết nếu điều này không đủ cụ thể và tôi sẽ cố gắng cụ thể hơn. Cảm ơn!Android: Đo Kích thước Chế độ xem trước khi hiển thị
Trả lời
Điều này thực sự có thể là một vấn đề thực sự phức tạp trong Android. Nếu bạn cần biết tại thời điểm bạn thiết lập các văn bản (tức là trước khi xem được trả lại hoặc gần được trả lại), bạn chỉ có tùy chọn thực sự là sử dụng StaticLayout. Nếu bạn có thể chờ đợi cho đến gần thời gian render, bạn có thể sử dụng một viewTreeObserver:
yourTextView.getViewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout(){
yourTextView.getLineCount();
}
}
onGlobalLayout có thể được gọi nhiều lần và đôi khi (vì lý do gì) Tôi đã tìm thấy rằng quan điểm không thực sự đặt ra, vì vậy bạn nên làm một số đăng nhập và xem nếu bạn có thể tìm thấy một cách để đảm bảo rằng bất kỳ kết quả bạn nhận được thực sự có ý nghĩa (tức là một số dòng> 0).
StaticLayouts là giải pháp thay thế phức tạp hơn có thể cung cấp cho bạn kích thước của chế độ xem và số dòng. Họ có thể yêu cầu một số tinh chỉnh để hoạt động bình thường và đảm bảo bạn sử dụng loại sơn đó từ chế độ xem bạn đang cố đo lường:
yourTextView.setText(newText);
//the last boolean should be true if you're using padding on your view
StaticLayout measure = new StaticLayout(yourTextView.getText(), yourTextView.getPaint(),
maxAvailableWidthForYourTextView, Layout.Alignment.ALIGN_NORMAL, 1.0f, 1.0f, false)
int numberOfLines = measure.getLineCount();
Nếu bạn sẵn sàng (hoặc đã có) TextView phân lớp, bạn có thể ghi đè onSizeChanged hoặc onMeasure và cố gắng lấy số dòng ở đó. Một lần nữa, giống như người quan sát cây xem, đôi khi những người đó có thể được gọi trước khi chế độ xem của bạn thực sự được đo lường, vì vậy bạn có thể phải kiểm tra để đảm bảo bất kỳ giá trị nào bạn nhận được trong các phương thức đó đều hợp lý.
- 1. Cách tìm Chiều rộng của chế độ xem trước khi chế độ xem được hiển thị?
- 2. Chế độ xem hiển thị Android GONE
- 3. Android - Nhận diện tích hiển thị của chế độ xem?
- 4. Bố cục chế độ xem sau khi đổi kích thước
- 5. UIView bringSubviewToFront: không * không * hiển thị chế độ xem trước
- 6. Không thể kích hoạt chế độ Xem trước Android Studio
- 7. Chế độ xem và hiển thị
- 8. Hiển thị văn bản động trong chế độ xem Android
- 9. Chế độ xem web - thay đổi nguồn trang trước khi hiển thị trang web?
- 10. Hiển thị chế độ xem từ chế độ không xem/chế độ xem trong mvvmcross
- 11. hiển thị định nghĩa chế độ xem
- 12. Bật chế độ xem đăng nhập trước khi trình điều khiển thanh tab được hiển thị
- 13. AngularJs: Chạy Chỉ thị sau khi Chế độ xem được hiển thị hoàn toàn
- 14. Android - Cần gọi lại khi Chế độ xem được hiển thị
- 15. Toàn màn hình: AVPlayerLayer không được thay đổi kích thước khi thay đổi kích thước chế độ xem gốc
- 16. Ember.js - Hiển thị chế độ xem phương thức với URL và chế độ xem gốc vẫn hiển thị
- 17. Android: autocompletetextview, danh sách đề xuất hiển thị phía trên chế độ xem văn bản?
- 18. Android: Hướng xem trước máy ảnh ở chế độ dọc
- 19. Hiển thị thanh tiến trình trong khi loại trực tiếp đang hiển thị chế độ xem
- 20. Chế độ xem trong Nhóm tùy chỉnh Chế độ xem không hiển thị
- 21. Nhận kích thước thực tế của chế độ xem iOS
- 22. Chế độ xem hiển thị ở chế độ xem cuộn trên màn hình
- 23. Chế độ xem Android: có thể kiểm tra khả năng hiển thị trước khi thiết lập khả năng hiển thị cải thiện hiệu suất?
- 24. Chế độ xem trang web tự động đổi kích thước thành chế độ xem dọc và ngang trong iphone
- 25. Trình xem phân cấp Android không hiển thị chỉ báo hiệu suất cho chế độ xem
- 26. Cách xem Chế độ xem hiển thị đầu tiên từ Android ListView
- 27. Android: nhận chiều cao của chế độ xem trước khi được vẽ
- 28. Django, hiển thị chế độ xem ở chế độ xem khác?
- 29. Phát triển Android chuyển sang chế độ hiển thị TextView
- 30. Xác định kích thước của cửa sổ WPF SizeToContent trước khi hiển thị