2013-05-17 31 views
5

tôi có thể tạo số 2 cuối nhỏ hơn nhưng tôi muốn chúng hiển thị trên cùng như hình bên dưới.Cách sử dụng TextAppearanceSpan

TextView TV = (TextView)findViewById(R.id.txt); 

Spannable WordtoSpan = new SpannableString("13.500,27");   

WordtoSpan.setSpan(new TextAppearanceSpan(null, 0, 12, null, null), WordtoSpan.length()-2, WordtoSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
TV.setText(WordtoSpan); 

Cảm ơn Talha

enter image description here

+0

Kiểm tra câu trả lời của tôi – Pragnani

Trả lời

4

Edit:

Bạn có thể sử dụng SuperscriptSpan()

Spannable WordtoSpan = new SpannableString("13.500,27");   
WordtoSpan.setSpan(new TextAppearanceSpan(null, 0, 17, null, null), WordtoSpan.length()-2, WordtoSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
WordtoSpan.setSpan(new SuperscriptSpan(), WordtoSpan.length()-2, WordtoSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

kích thước phông chữ Tăng để xem hiệu quả

enter image description here


Hãy thử này tôi không tìm thấy bất kỳ cách nào khác, nhưng để thêm văn bản superscript cho chuỗi spannalbe gốc

Áp dụng nhịp gì đã bao giờ bạn muốn cho các SpannableStringBuilder

SpannableStringBuilder builder=new SpannableStringBuilder("13.500,"); 
    builder.append(Html.fromHtml("X<sup>27</sup>")) 

Chỉnh sửa 2

Nếu bạn tạo khoảng tùy chỉnh như dưới đây, nó căn chỉnh siêu văn bản lên trên cùng tuyệt đối. Nhưng nếu bạn sử dụng SuperscriptSpan mặc định, nó không thể làm cho văn bản alignt lên trên.

public class SuperscriptSpan2 extends MetricAffectingSpan implements 
      ParcelableSpan { 
     public SuperscriptSpan2() { 
     } 

    public int getSpanTypeId() { 
     return TextUtils.CAP_MODE_CHARACTERS; 
    } 

    public int describeContents() { 
     return 0; 
    } 

    public void writeToParcel(Parcel dest, int flags) { 
    } 

    @Override 
    public void updateDrawState(TextPaint tp) { 
     tp.baselineShift += (int) (tp.ascent()/1.25); 
    } 

    @Override 
    public void updateMeasureState(TextPaint tp) { 
     tp.baselineShift += (int) (tp.ascent()/1.25); 
    } 
}