2010-09-02 44 views
27

Tôi đang cố gắng tạo bố cục ngang của mình tận dụng lợi thế của phòng có sẵn.Bọc văn bản xung quanh Xem

Trong thông tin hiển thị hoạt động, tôi có 'hộp sự kiện', sau đó là một hộp văn bản lớn. Tôi muốn hộp thông tin trôi nổi, tương tự như hình dưới đây.

Điều này có thể sử dụng api TextView trên Android không?

Example picture

+0

Bạn có tìm giải pháp làm việc cho vấn đề này không? – sniurkst

+0

Không phải bất cứ điều gì tốt hơn so với webview. Tôi chưa tìm thấy cách sử dụng chế độ xem web với tài nguyên apk. –

+0

bất kỳ lựa chọn thay thế nào để sử dụng chế độ xem web? – digitalWestie

Trả lời

3

Tôi khuyên bạn nên sử dụng WebView cho việc này. Bạn có thể định dạng văn bản trong chế độ xem web với định dạng HTML/CSS thông thường, với bố cục mong muốn của bạn khá đơn giản để thực hiện.

+0

Phải, nhưng sẽ khá lộn xộn khi chia sẻ tài nguyên và nội dung? –

+0

Tôi downvoted chỉ vì có một giải pháp dễ dàng hơn và ít lộn xộn với FlowTextView (xem câu trả lời khác) –

2

Tôi sợ điều này là không thể với một TextView duy nhất. TextView phải là hình chữ nhật và không thể hiển thị chế độ xem con. Cách giải quyết có thể là tạo hai TextView và thực hiện lần cắt đầu tiên của văn bản, sau đó hỏi xem văn bản đầu tiên bao nhiêu nó có thể hiển thị và thêm phần còn lại của chuỗi vào chế độ xem văn bản thứ hai.

+1

Tôi không thể tìm thấy phương pháp để kiểm tra số lượng văn bản có thể được hiển thị trong một TextView. Có lẽ có một cách để làm điều này nhưng tôi không thể tìm thấy nó ngay bây giờ. – Janusz

+0

Tôi biết về phương pháp Paint.breaktext. Nếu tôi có thể lấy được Paint từ TextView, điều đó có thể thực hiện được. –

10

tìm thấy giải pháp này !! check it out từ nguồn --->answer source

Làm thế nào để có một vài yếu tố bố trí quấn quanh

Dưới đây là một vấn đề mọi người có thể gặp phải khi đối phó với bố trí trên Android.

Giả sử bạn muốn đặt một hình ảnh ở giữa một câu. bạn có thể thêm một vài TextView và một ImageView nhưng nếu không gian ngang quá nhỏ thì hai TextViews sẽ bắt đầu gói xung quanh một cách độc lập mà sẽ trông kỳ lạ. Bạn muốn hình ảnh là một phần của TextView của bạn và toàn bộ câu để quấn quanh độc đáo. Để làm như vậy: * thay thế ba đối tượng bằng một Spannable TextView * sử dụng SpannableStringBuilder để nối thêm tất cả các chuỗi của bạn (đừng quên thêm một ký tự thừa (ví dụ: không gian) sẽ được thay thế bằng hình ảnh của bạn) * và cuối cùng sử dụng setSpan (ImageSpan, bắt đầu, kết thúc, gắn cờ) trên trình tạo hình đó, nơi ImageSpan là ImageSpan chứa hình ảnh của bạn, bắt đầu là chỉ mục của ký tự bạn đã chèn

Và đây là mã sẽ trông giống như:

thêm android: bufferType = "spannable" vào TextView của bạn

SpannableStringBuilder builder = new SpannableStringBuilder(); 
builder.append(mContext.getText(R.string.part1)); 
int lengthOfPart1 = builder.length(); 
builder.append(" "); 
builder.append(mContext.getText(R.string.part2)); 
Drawable d = mContext.getResources().getDrawable(R.drawable.picasaIcon); 
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); // <---- Very important otherwise your image won't appear 
ImageSpan myImage = new ImageSpan(d); 
builder.setSpan(myImage, lengthOfPart1, lengthOfPart1 + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
myTextView.setText(builder); 
+2

Đó là một thủ thuật tốt đẹp. Thật không may spannable chỉ có thể được sử dụng để định vị một hình ảnh trên một dòng. Tôi đoán một tùy chọn có thể là cắt hình ảnh thành nhiều đoạn có chiều cao dòng, sau đó có thể được chèn vào như một phần có thể quét được. –

+0

Wow cảm ơn bạn rất nhiều vì đã đăng nguồn đó và câu trả lời này. Tôi đã nhìn khắp mọi nơi và không bao giờ nghĩ đến việc sử dụng một 'Spannable'. Đây sẽ là câu trả lời! – Sakiboy

6

Tôi biết đã muộn nhưng đối với những người vẫn cố gắng đạt được điều này, đây là một thư viện nhằm đạt được điều này. https://github.com/deano2390/FlowTextView

Các vấn đề liên quan