2013-07-19 2 views
3

Это может быть ошибка, но мне нужно знать ... :) Iam develeoping anroid application, In in Я хочу отобразить двух типов в одном текстовом виде и найти this One very useful,A custom typeface span that extends typeface span, Как я понимаю, мы создавая spannable следующим образом, используя два словаЛюбой способ установить диапазон непосредственно на текст с возможностью расширения?

String firstWord = "first "; 
String secondWord = "second"; 
// Create a new spannable with the two strings 
Spannable spannable = new SpannableString(firstWord+secondWord); 

затем устанавливает два типа лицом к том, что слова, используя наш пользовательский промежуток, как этого

// Set the custom typeface to span over a section of the spannable object 
spannable.setSpan(new CustomTypefaceSpan("sans-serif",CUSTOM_TYPEFACE), 0,    
firstWord.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
spannable.setSpan(new CustomTypefaceSpan("sans-serif",SECOND_CUSTOM_TYPEFACE), rstWord.length(), secondWord.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

Теперь мой вопрос, у меня есть большого количества текста так Если я я могу поставить прогибы прямо в моем тексте, это будет более простое для нас, - это то, что можно поместить промежутки непосредственно в текст, как мы положили <b>bold </b>, так как мне нужно использовать мой пользовательский диапазон шрифтов, например <typeface1> sample </typeface1> <typeface2> Doc </typeface2>.

Что мне нужно, НЕПОСРЕДСТВЕННО применить изменения к тексту ЧТО SET SPAN ДЕЛАТЬ ДЛЯ ТЕКСТА

Это возможно, если это возможно, что я должен написать в пролете в моем тексте, как можно достичь это .. или я совершенно не прав?

Спасибо за

+0

Вы хотите, чтобы вы отображали TWO FACES в одном текстовом режиме? – IanB

+2

да, я хочу отобразить ДВУХ ТИПА FACES в одном текстовом виде –

+0

Вы можете использовать полужирный шрифт. например gothic_century_bold –

ответ

2

Очень поздний ответ, но то, что вы просили довольно легко.

Например, скажем, мы хотим изменить все между кавычками в курсивный шрифт.

String s = "\"Hello my name is Edward\" Hola, my nombre es Edward";   
    Pattern p = Pattern.compile("\"([^\"]*)\""); 
    Matcher m = p.matcher(text); 
    Spannable spannable = new SpannableString(s); 
    while (m.find()) {   
     int textLocation = text.indexOf(m.group(1)); 

     // Set the custom typeface to span over a section of the spannable object  
     spannable.setSpan(new CustomTypefaceSpan("sans-serif",my_italic_font), 
     textLocation-1, textLocation + m.group(1).length(),spannable.SPAN_EXCLUSIVE_EXCLUSIVE);     

     // Set the text of a textView with the spannable object 
     TextView textbox = (TextView) v.findViewById(R.id.cardtextbox); 

    } 
    textbox.setText(spannable); 

Результат s будет

«Здравствуйте, меня зовут Эдвард» Hola, мой Номбр эс Эдвард

Теперь вместо кавычек вы будете использовать шаблон регулярных выражений для тегов, как <b>bold </b> ;

И вы также можете удалить теги после этого простым .replace();

+0

Спасибо, Эдвард за ответ, это не та вещь, которую я хочу. В ответ мы используем spannable.setSpan, чтобы установить диапазон желаемого индекса, я хочу чтобы избежать инструкции setspan из моего кода ... и непосредственно применить шрифт к самому тексту без каких-либо дальнейших модификаций ... Soryy может быть, это ошибка: –