问题描述:有时候需要为一个TextView设置不同的颜色和字体大小,这是怎么办呢?
问题解答:
-
首先先在styles.xml文件中定义你需要的样式,可以设置大小、颜色等。如:
<style name="style0"> <item name="android:textSize">20sp</item> <item name="android:textColor">@color/black</item> </style> <style name="style1"> <item name="android:textSize">17sp</item> <item name="android:textColor">@color/gray</item> </style>
-
在代码中添加如下代码:
if (goods.getPack()!=null&&!goods.getPack().isEmpty()){ //为TextView设置不同的字体大小和颜色 SpannableString styledText = new SpannableString(goods.getName()+" "+goods.getPack()); styledText.setSpan(new TextAppearanceSpan(mContext, R.style.style0), 0, goods.getName().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); styledText.setSpan(new TextAppearanceSpan(mContext, R.style.style1), goods.getName().length()+2, goods.getName().length()+goods.getPack().length()+2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); name.setText(styledText, TextView.BufferType.SPANNABLE); }else{ name.setText(goods.getName()); }
如果你只是需要设置文字的样色,可以考虑使用html
/** * 采用HTML为标题设置不同颜色 * @param pack 包装 * @param name 产品名 * @return */ private String getColorString(String name,String pack){ return "<font color=\"#323232\">" + name + "</font>"+"<font color=\"#939393\" font-size:10px>" + pack + "</font>" ; }
调用方法设置字体颜色
name.setText(Html.fromHtml(getColorString(goods.getName(),goods.getPack())));