有没有办法直接将span设置为spannable文本?

时间:2013-07-19 11:09:56

标签: android spannable

这可能是一个大错,但我需要知道...... :) Iam开发了一个Android应用程序,In in我想在一个textview中显示两个类型的face并找到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>

我需要的是什么,直接应用更改文本设置对文本的作用

这是否可能,如果可能的话,我需要在我的文字中写作“我怎么能实现这一点......或者我是完全错误的?”

感谢所有

1 个答案:

答案 0 :(得分: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,我的nombre es Edward

现在使用正则表达式代替引号而不是像<b>bold </b>这样的标记;

您也可以使用简单的.replace()删除标签。