SpannableString:
SpannableString在strings.xml对应关系(StringBlock.java)
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE --- 不包含两端start和end所在的端点
- Spanned.SPAN_EXCLUSIVE_INCLUSIVE --- 不包含start,但包含end
- Spanned.SPAN_INCLUSIVE_EXCLUSIVE --- 包含start,但不包含end
- Spanned.SPAN_INCLUSIVE_INCLUSIVE--- 包含start和end所在的端点
public void testSetSpan() { String text = "hello, world"; SpannableString spannable = new SpannableString(text); spannable.setSpan(null, 1, 4, SpannableString.SPAN_POINT_POINT); assertEquals(1, spannable.getSpanStart(null)); assertEquals(4, spannable.getSpanEnd(null)); assertEquals(SpannableString.SPAN_POINT_POINT, spannable.getSpanFlags(null)); UnderlineSpan underlineSpan = new UnderlineSpan(); spannable.setSpan(underlineSpan, 0, 2, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE); assertEquals(0, spannable.getSpanStart(underlineSpan)); assertEquals(2, spannable.getSpanEnd(underlineSpan)); assertEquals(SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE, spannable.getSpanFlags(underlineSpan)); try { spannable.setSpan(null, 4, 1, SpannableString.SPAN_POINT_POINT); fail("should throw IndexOutOfBoundsException here"); } catch (IndexOutOfBoundsException e) { } try { spannable.setSpan(underlineSpan, -1, text.length() + 1, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE); fail("should throw IndexOutOfBoundsException here"); } catch (IndexOutOfBoundsException e) { } }
public void testRemoveSpan() { SpannableString spannable = new SpannableString("hello, world"); spannable.removeSpan(null); UnderlineSpan underlineSpan = new UnderlineSpan(); spannable.setSpan(underlineSpan, 0, 2, 2); assertEquals(0, spannable.getSpanStart(underlineSpan)); assertEquals(2, spannable.getSpanEnd(underlineSpan)); assertEquals(2, spannable.getSpanFlags(underlineSpan)); spannable.removeSpan(underlineSpan); assertEquals(-1, spannable.getSpanStart(underlineSpan)); assertEquals(-1, spannable.getSpanEnd(underlineSpan)); assertEquals(0, spannable.getSpanFlags(underlineSpan)); // try to test removeSpan when there are no spans spannable.removeSpan(underlineSpan); assertEquals(-1, spannable.getSpanStart(underlineSpan)); assertEquals(-1, spannable.getSpanEnd(underlineSpan)); assertEquals(0, spannable.getSpanFlags(underlineSpan)); }