2014-02-21 7 views
5

Gibt es eine Möglichkeit, Index und hochgestellte Zeichen für bestimmte Zeichen in TextView festzulegen? Ich möchte einen Text anzuzeigen, die wie folgt aussieht:Subscript und Superscript für bestimmte Zeichen in der TextView setzen?

enter image description here

Also habe ich versucht, diesen Code:

TextView tv1 = ... ; 
String latex = "\u222E"; 
tv1.setText(Html.fromHtml(latex + "<sup>200</sup><sub>2</sub> f(x)dx")); 

Aber das Ergebnis ist folgendes:

enter image description here

Sie kann das hochgestellte Zeichen nach dem Index angezeigt werden.Wie kann ich dieses Problem lösen? Kann ich es mit SpannableString lösen? Oder kann ich die Position des Index ändern?

+0

von ReplacementSpan – pskink

+0

@pskink erstreckt, kann man es erklären oder einige Links sagen Sie mir, mir zu helfen, zu wissen, wie es zu tun ,Bitte? Vielen Dank. – hasanghaforian

+0

sicher, siehe meine Antwort – pskink

Antwort

2

diese individuelle Spanne können Sie Idee verstehen die Basis helfen: Ihren eigenen Span

class SupSubSpan extends ReplacementSpan { 
    private String sup; 
    private String sub; 

    public SupSubSpan(String sup, String sub) { 
     this.sup = sup; 
     this.sub = sub; 
    } 

    @Override 
    public int getSize(Paint paint, CharSequence text, int start, int end, FontMetricsInt fm) { 
     return (int) Math.max(paint.measureText(sup), paint.measureText(sub)); 
    } 

    @Override 
    public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) { 
     canvas.drawText(sup, x, y + paint.ascent()/2, paint); 
     canvas.drawText(sub, x, y - paint.ascent()/2, paint); 
    } 
} 
erstellen
Verwandte Themen