2012-07-02 9 views
15

Tôi đã cố gắng tạo một hình tròn TextView. Vòng tròn của nó mà tôi muốn chứa toàn bộ không gian phía trên một bong bóng tròn như trong hình dưới đây.Làm thế nào để có một TextView tròn

Vui lòng xem hình ảnh đính kèm.

Circular bubble with text in side

Trong hình ảnh này, chúng ta có một bong bóng tròn với văn bản tròn trong đó. Tôi đã thử đặt hình bầu dục .xml làm nền của TextView nhưng vẫn không có may mắn.

Chỉnh sửa:

Khi độ dài văn bản tăng. Nó phải giảm kích thước để vừa với vòng tròn. Đây là phần khó nhất để suy nghĩ.

Trả lời

10

Bạn cần phải tạo một cái nhìn tùy chỉnh, kéo dài từ TextView lẽ, thiết lập các vòng tròn như hình nền, và tính toán độ rộng text/phá vỡ đường dây bằng tay theo chiều rộng của văn bản.

Để tính toán độ rộng của một chuỗi, xem How to calculate string font width in pixels?

Một số toán học và tính toán được yêu cầu của khóa học để đo lường không gian có sẵn trên mỗi dòng; nhưng tôi nghĩ đó là cách duy nhất, vì không có thành phần tiêu chuẩn nào ngoài đó để làm điều đó.

Để đặt văn bản vào chế độ xem, hãy sử dụng drawText trong số Canvas class.

+2

+1, không có thành phần tích hợp cho việc này. Ngoài ra, tạo chế độ xem tùy chỉnh thật thú vị :) – Felix

+0

Bạn đã nói, "tính chiều rộng của văn bản/ngắt dòng theo cách thủ công theo chiều rộng của văn bản". Điều này cần phải năng động để vừa với văn bản có độ dài khác nhau bên trong vòng tròn. Làm thế nào tôi có thể đo số dòng mà văn bản của tôi sẽ lấp đầy vòng tròn bên trong? –

+0

Tôi nghĩ rằng bạn sẽ đo toàn bộ văn bản dưới dạng một chuỗi, cung cấp cho bạn toàn bộ chiều rộng cần thiết trong px. Sau đó, bạn cần phải tính toán không gian px trên mỗi dòng, bắt đầu từ trung tâm ra bên ngoài. Tôi không có một công thức cho rằng trong tầm tay, nhưng đó có lẽ là cách tôi sẽ bắt đầu nhìn vào nó. Thêm ngắt dòng và sau đó đếm số lần ngắt dòng bạn cần. Tất nhiên đây là một loại tính toán 'động', vì số lượng các dòng có liên quan trực tiếp với độ dài chuỗi của mỗi dòng. Tôi chắc chắn rằng nó là một chút phức tạp và không phải là dễ dàng, nhưng có thể được thực hiện ;-) –