Android
SpannableString
Поиск…
Синтаксис
-
char charAt (int i)
-
boolean equals (Object o)
-
void getChars (int start, int end, char[] dest, int off)
-
int getSpanEnd (Object what)
-
int getSpanFlags (Object what)
-
int getSpanStart (Object what)
-
T[] getSpans (int queryStart, int queryEnd, Class<T> kind)
-
int hashCode ()
-
int length ()
-
int nextSpanTransition (int start, int limit, Class kind)
- void removeSpan (Object what)
-
void setSpan (Object what, int start, int end, int flags)
-
CharSequence subSequence (int start, int end)
-
String toString ()
-
SpannableString valueOf (CharSequence source)
Добавить стили в TextView
В следующем примере мы создаем Activity для отображения одного TextView.
TextView будет использовать SpannableString
качестве своего содержимого, что иллюстрирует некоторые из доступных стилей.
Вот, что мы будем делать с текстом:
- Сделайте это больше
- Смелый
- подчеркивание
- выделять подчеркиванием
- Зачеркнутые
- цветной
- Выделенные
- Показать как верхний индекс
- Показать как индекс
- Показать как ссылку
- Сделайте его интерактивным.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SpannableString styledString
= new SpannableString("Large\n\n" // index 0 - 5
+ "Bold\n\n" // index 7 - 11
+ "Underlined\n\n" // index 13 - 23
+ "Italic\n\n" // index 25 - 31
+ "Strikethrough\n\n" // index 33 - 46
+ "Colored\n\n" // index 48 - 55
+ "Highlighted\n\n" // index 57 - 68
+ "K Superscript\n\n" // "Superscript" index 72 - 83
+ "K Subscript\n\n" // "Subscript" index 87 - 96
+ "Url\n\n" // index 98 - 101
+ "Clickable\n\n"); // index 103 - 112
// make the text twice as large
styledString.setSpan(new RelativeSizeSpan(2f), 0, 5, 0);
// make text bold
styledString.setSpan(new StyleSpan(Typeface.BOLD), 7, 11, 0);
// underline text
styledString.setSpan(new UnderlineSpan(), 13, 23, 0);
// make text italic
styledString.setSpan(new StyleSpan(Typeface.ITALIC), 25, 31, 0);
styledString.setSpan(new StrikethroughSpan(), 33, 46, 0);
// change text color
styledString.setSpan(new ForegroundColorSpan(Color.GREEN), 48, 55, 0);
// highlight text
styledString.setSpan(new BackgroundColorSpan(Color.CYAN), 57, 68, 0);
// superscript
styledString.setSpan(new SuperscriptSpan(), 72, 83, 0);
// make the superscript text smaller
styledString.setSpan(new RelativeSizeSpan(0.5f), 72, 83, 0);
// subscript
styledString.setSpan(new SubscriptSpan(), 87, 96, 0);
// make the subscript text smaller
styledString.setSpan(new RelativeSizeSpan(0.5f), 87, 96, 0);
// url
styledString.setSpan(new URLSpan("http://www.google.com"), 98, 101, 0);
// clickable text
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
// We display a Toast. You could do anything you want here.
Toast.makeText(SpanExample.this, "Clicked", Toast.LENGTH_SHORT).show();
}
};
styledString.setSpan(clickableSpan, 103, 112, 0);
// Give the styled string to a TextView
TextView textView = new TextView(this);
// this step is mandated for the url and clickable styles.
textView.setMovementMethod(LinkMovementMethod.getInstance());
// make it neat
textView.setGravity(Gravity.CENTER);
textView.setBackgroundColor(Color.WHITE);
textView.setText(styledString);
setContentView(textView);
}
И результат будет выглядеть так:
Многострочный, с несколькими цветами
Метод: setSpanColor
public Spanned setSpanColor(String string, int color){
SpannableStringBuilder builder = new SpannableStringBuilder();
SpannableString ss = new SpannableString(string);
ss.setSpan(new ForegroundColorSpan(color), 0, string.length(), 0);
builder.append(ss);
return ss;
}
Использование:
String a = getString(R.string.string1);
String b = getString(R.string.string2);
Spanned color1 = setSpanColor(a,Color.CYAN);
Spanned color2 = setSpanColor(b,Color.RED);
Spanned mixedColor = TextUtils.concat(color1, " ", color2);
// Now we use `mixedColor`
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow