我想为一个单词设置自定义字体,该单词出现在字符串中的任何位置。
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);
但它影响整个字符串。请指导我如何实现它。
答案 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);