2012-01-24 3 views
11

Tôi đã tạo một SpannableString, với ký tự đầu tiên và 2 ký tự nhỏ hơn phần còn lại. Có vẻ như sau:Điều chỉnh căn chỉnh văn bản bằng SpannableString

sBBBBss 

Tôi muốn căn chỉnh các ký tự nhỏ hơn để chúng được căn chỉnh với phần trên cùng của văn bản lớn hơn, thay vì dưới cùng (khi chúng xuất hiện ở đây).

Điều này có khả thi không?

Tôi đoán Tôi đang tìm kiếm một cái gì đó như thế này pseudo-code:

myAmount.setSpan (mới RelativeAlignSpan (View.TOP), 0, 1, 0);

Lựa chọn thay thế duy nhất khác của tôi là tạo bố cục mới, với nhiều TextView, tôi cư trú độc lập và căn chỉnh theo cách tôi muốn. Tôi nghĩ rằng đây là loại lộn xộn, và muốn sử dụng cách tiếp cận SpannableString.

Trả lời

28

Vì vậy, tôi đã tìm thấy câu trả lời cho câu hỏi này đăng ở đây để giúp người tiếp theo.

Tôi tạo ra một lớp helper để chứa các phương pháp để điều chỉnh Span, bạn có thể gọi nó là sử dụng cú pháp này (điều này được thiết lập 2 ký tự cuối cùng xuất hiện cao hơn trên dòng):

SpannableString contentAmount = new SpannableString(amount); 

contentAmount.setSpan(new SuperscriptSpanAdjuster(3.0/5.0), contentAmount.length() - 2, contentAmount.length(), SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE); 

và lớp helper là:

/** 
* This is a helper class to help adjust the alignment of a section of text, when using SpannableStrings to set text 
* formatting dynamically. 
* 
*/ 
import android.text.TextPaint; 
import android.text.style.MetricAffectingSpan; 

public class SuperscriptSpanAdjuster extends MetricAffectingSpan { 
    double ratio = 0.5; 

    public SuperscriptSpanAdjuster() { 
    } 

    public SuperscriptSpanAdjuster(double ratio) { 
     this.ratio = ratio; 
    } 

    @Override 
    public void updateDrawState(TextPaint paint) { 
     paint.baselineShift += (int) (paint.ascent() * ratio); 
    } 

    @Override 
    public void updateMeasureState(TextPaint paint) { 
     paint.baselineShift += (int) (paint.ascent() * ratio); 
    } 
} 
+1

+1 để đăng câu trả lời để giúp cộng đồng – Guillaume

+0

Cảm ơn bạn đã chia sẻ – Rotemmiz

+1

Vẫn còn clip ở đầu số hoặc Văn bản – JPM