Есть ли какой-нибудь пример о Spanned и Spannable тексте? - PullRequest
28 голосов
/ 29 января 2010

Я борюсь с использованием EditText и Spannable text object. В наши дни я читал документы API около десяти раз, даже я не уверен, что я правильно понимаю.Поэтому я ищу своего рода пример, который показывает мне, как использовать EditText и Spannable.

Ответы [ 2 ]

32 голосов
/ 01 февраля 2010

Поскольку вы не указываете, что вы не можете понять из API, трудно ответить на ваши вопросы (краткий ответ: переписать свой вопрос на конкретный вопрос, а не на общий).

Типичный пример Spannable - это что-то вроде этого, чтобы превратить выделенный текст в EditText в Курсив:

Spannable str = mBodyText.getText(); 
if(mBodyText.getSelectionEnd() > mBodyText.getSelectionStart()) 
  str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC),  
                      mBodyText.getSelectionStart(), mBodyText.getSelectionEnd(),  
                      Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
else
  str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC),
              mBodyText.getSelectionEnd(),
              mBodyText.getSelectionStart(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

Это вырезано и вставлено из чего-то другого, так что ваша непосредственная вставка могла пострадать, но это по крайней мере показывает рабочий пример Spannable (в данном случае StyleSpan) В API вы можете найти другие типы пролетов (в частности, ImageSpan, что является распространенным вопросом среди недавно преобразованных дроидов).

10 голосов
/ 02 октября 2010

Я только начинаю пытаться понять это, и это кажется излишне хитрым.

Вот рабочий метод, чтобы добавить НОВЫЙ расширяемый текст в существующее представление.Я хотел добавить цветной текст в представление, и это выглядело как единственный способ сделать это.

Хотя это выглядит как уродливый хак, вы можете создать фиктивный TextView (нигде не показанный) и стилизовать тексттам, а затем добавить этот стиль текста, где вы хотите.Кредит на это идет в iifuzz на anddev.org.Мой код выглядит следующим образом:

    spanbuffer = new TextView(context);
    spanbuffer.setText(newText, TextView.BufferType.SPANNABLE);
    Spannable s = (Spannable) spanbuffer.getText();
    s.setSpan(new ForegroundColorSpan(Color.RED), 0, newText.length() - 1, 0);
    this.append(s);

Я думаю, что вы должны иметь возможность создавать новый текст с поддержкой SpannableFactory, например:

    Spannable s = Spannable.Factory.getInstance().newSpannable(newText);

, но я не могполучить этот текст, чтобы фактически показать новые эффекты span, поэтому я сдался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...