2012-01-24 8 views
11

का उपयोग करके टेक्स्ट संरेखण समायोजित करना मैंने पहले वर्ण के साथ SpannableString बनाया है, और बाकी के बाकी 2 छोटे हैं। यह इस तरह दिखता है:SpannableString

sBBBBss 

मैं नीचे के बजाय, तो वे बड़ा पाठ के शीर्ष के साथ गठबंधन कर रहे हैं छोटे अक्षर में संरेखित करने के लिए (के रूप में वे यहाँ दिखाई) चाहते हैं।

क्या यह संभव है?

मैं मैं इस छद्म कोड की तरह कुछ के लिए देख रहा हूँ लगता है:

myAmount.setSpan (नई RelativeAlignSpan (View.TOP), 0, 1, 0);

मेरा एकमात्र अन्य विकल्प एक नया लेआउट बनाना है, जिसमें कई टेक्स्ट व्यू हैं, जिन्हें मैं स्वतंत्र रूप से पॉप्युलेट करता हूं, और हालांकि मैं कृपया संरेखित करता हूं। मुझे लगता है कि यह गन्दा है, और स्पैनबलस्टिंग दृष्टिकोण का उपयोग करना पसंद करेगा।

उत्तर

28

तो मुझे इस प्रश्न का उत्तर अगले व्यक्ति की सहायता के लिए यहां पोस्ट करने का उत्तर मिला।

मैं अवधि को समायोजित करने के तरीकों को रोकने के लिए एक सहायक श्रेणी का निर्माण, आप इसे इस सिंटैक्स का उपयोग कॉल कर सकते हैं (यह पिछले 2 वर्ण लाइन पर ऊपर दिखाने के स्थापित कर रही है):

SpannableString contentAmount = new SpannableString(amount); 

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

और सहायक वर्ग है:

/** 
* 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 एक उत्तर पोस्ट समुदाय – Guillaume

+0

धन्यवाद मदद करने के लिए एक नंबर या पाठ के ऊपर से – Rotemmiz

+1

फिर भी क्लिप साझा करने के लिए के लिए – JPM