2016-12-09 2 views
1

le code suivant fonctionne sur tout ce que j'essaie entre 2,3 et 6.0.1 mais échoue 7.0/Emulator et 7.1.1/Nexus 6PSpannableStringBuilder.getSpans() ordre de tri est erroné sur Nougat 7.0/7.1

SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(); 
for (int i=0;i<5;++i) { 
    int p = spannableStringBuilder.length(); 
    spannableStringBuilder.append("aAAAAa\n"); 
    spannableStringBuilder.setSpan(new StyleSpan(Typeface.ITALIC), p+1, p+5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
} 

boolean pass = true; 
StyleSpan[] spans = spannableStringBuilder.getSpans(0, spannableStringBuilder.length(), StyleSpan.class); 
int p = 0; 
for (StyleSpan span : spans) { 
    int start = spannableStringBuilder.getSpanStart(span); 
    if (start<p) { 
     pass = false; 
     break; 
    } 
    p = start; 
} 
+0

déposée bugreport https://code.google.com/p/android/issues/detail?id=229861 – SteelBytes

+0

pourrait u s'il vous plaît me aider dans ce ... Spannable.getSpanStart () ne donne pas le bon index dans les appareils Marshmallow ... Que dois-je faire maintenant ??? –

Répondre

2

solution actuelle J'utilise

Arrays.sort(spans, new Comparator<ClickableSpan>() { 
    @Override 
    public int compare(ClickableSpan o1, ClickableSpan o2) { 
     return s.getSpanStart(o1)-s.getSpanStart(o2); 
    } 
});