2011-08-18 25 views
6

Tôi có văn bản dài chứa tên trông giống như "cái gì đó-một cái gì đó". Văn bản dài này được hiển thị trong TextView. Vấn đề là "cái gì đó-một cái gì đó" có dòng bị phá vỡ.Android: Làm cách nào để tạo khối không thể phá vỡ trong TextView?

Tôi đã tìm thấy ký tự unicode U + 2011 NON-BREAKING HYPHEN. Nhưng có vẻ như ký tự unicode này được hỗ trợ trong phông chữ kể từ Android 3.0. Tuy nhiên, tôi đang hỗ trợ Android 2.1, thay vào đó nhân vật thay thế được hiển thị.

Tôi đã xem xét cấp Spannable, nhưng tôi không tìm thấy cách xác định khối văn bản không vỡ. Có lẽ tôi bỏ qua một cái gì đó.

Trả lời

2

Tôi đã giải quyết việc phá vỡ khối văn bản bằng cách triển khai ReplacementSpan để hiển thị văn bản trong một khối. Đây là mã:

public class NonbreakingSpan extends ReplacementSpan { 

    @Override 
    public void draw(
      Canvas canvas, 
      CharSequence text, int start, int end, 
      float x, int top, int y, int bottom, 
      Paint paint) { 
     canvas.drawText(text, start, end, x, y, paint); 
    } 

    @Override 
    public int getSize(
      Paint paint, 
      CharSequence text, int start, int end, 
      FontMetricsInt fm) { 
     return Math.round(paint.measureText(text, start, end)); 
    } 
} 
Các vấn đề liên quan