0

I have to show some characters or numbers in superscript and subscript in TextView. So I use SpannableStringBuilder but in Nougat its output is inconsistent.

public class MainActivity extends AppCompatActivity {


ArrayList<SpannableStringBuilder> MyList = new ArrayList<>();
TextView TextView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView = (TextView)findViewById(R.id.textView);

}

void AddText(){
    SpannableStringBuilder txt = new SpannableStringBuilder("TEST");
    txt.setSpan(new SuperscriptSpan(), 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    txt.setSpan(new RelativeSizeSpan(0.5f), 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    MyList.add(txt);

    SpannableStringBuilder finalText = new SpannableStringBuilder(MyList.get(0));

    for (int i=1; i<=MyList.size()-1; i++)
        finalText.append(MyList.get(i));

    TextView.setText(finalText);

}

public void button(View view){
    AddText();
}

}

Here is the result

  • inconsistent in what way? Compared to repeated uses or in comparison to prior versions of android? Also when writing code in java, its best to follow standards, methods should be written in camelCase (lowercase starting character upper cased following words) – JoxTraex Sep 21 '17 at 04:12
  • Inconsistent in repeated use. As you see in picture that all text "TEST" is not aligned. This problem don't occur in previous versions like in Android 4.3. – Muhammad Ali Asif Sep 21 '17 at 05:22

0 Answers0