如何在TextView文本中为单词设置自定义字体

时间:2014-04-04 12:59:42

标签: android textview custom-font spannablestring

我想为一个单词设置自定义字体,该单词出现在字符串中的任何位置。

Ex:Hai @abc 你好吗?亲爱的朋友,您好 @abc

在上面的例子中,我必须为" abc"应用自定义字体。我尝试过Spannable类,但我无法得到它。

final TextView txtComments = (TextView)view.findViewById(R.id.tv_comments);  
SpannableStringBuilder SS = new SpannableStringBuilder(alcomments.get(i));
SS.setSpan (new CustomTypefaceSpan("", tf), 0, SS.length(),Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
txtComments.setText(SS);

但它影响整个字符串。请指导我如何实现它。

2 个答案:

答案 0 :(得分:1)

First Part Not Bold   BOLD  rest not bold

String normalBefore= "First Part Not Bold ";
String normalBOLD=  "BOLD ";
String normalAfter= "rest not bold";
String finalString= normalBefore+normalBOLD+normalAfter;
Spannable sb = new SpannableString( finalString );
sb.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), finalString.indexOf(normalBOLD), normalBOLD.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //bold
sb.setSpan(new AbsoluteSizeSpan(intSize), finalString.indexOf(normalBOLD), normalBOLD.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);//resize size

在TextView

中显示
textview.setText(sb);

参考:https://stackoverflow.com/a/10828482/2480911

如果您想应用自定义文字,那么

//在这里给出字体路径。在我的情况下,我把字体放在资产文件夹中。

String fontPath = "bankgthd.ttf";

    // text view label


final TextView txtComments = (TextView)view.findViewById(R.id.tv_comments);  

    // Loading Font Face


Typeface tf = Typeface.createFromAsset(getAssets(), fontPath);

    // Applying font


txtGhost.setTypeface(tf);

答案 1 :(得分:0)

您可以使用html管理它或在textview中设置自定义字体样式。

1)如果这种情况很少见,那么请使用这样的设置html文本,

TextView txtComments = (TextView)view.findViewById(R.id.tv_comments); 
txtComments.setText(Html.fromHtml("Hi<font color=""#FF0000"">abc</font>"));

否则设置这样的自定义字体。

2)

Typeface type = Typeface.createFromAsset(getAssets(),"fonts/Kokila.ttf"); 
txtyour.setTypeface(type);