首页 > 代码库 > Android TextView设置个别字体样式
Android TextView设置个别字体样式
TextView进一步深化:
通过查询资料,了解到格式化文字的方式主要分为两大类:
第一类:HTML标签格式化文字
代码比较简单,如下:
- import
android.app.Activity; - import
android.os.Bundle; - import
android.text.Html; - import
android.widget.TextView; -
- public
class AndroidFronColorTest extendsActivity { -
-
void onCreate(Bundle savedInstanceState) { -
-
-
setContentView(R.layout.main); -
-
TextView htmlFormateTextView = (TextView)findViewById(R.id.testTextView); -
-
String source = color=‘red‘>红色字</font>的格式" ; -
-
htmlFormateTextView.setText(Html.fromHtml(source)); -
} - }
第二类通过SpannableString进行格式化操作:
- public
class TextViewLinkActivity extendsActivity { -
TextView mTextView = null; -
SpannableString msp = null; -
-
-
@Override -
public void onCreate(Bundle savedInstanceState) { -
super.onCreate(savedInstanceState); -
setContentView(R.layout.main); -
-
mTextView = (TextView)findViewById(R.id.myTextView); -
-
//创建一个 SpannableString对象 -
msp = new SpannableString( "字体测试字体大小一半两倍前景色背景色正常粗体斜体粗斜体下划线删除线x1x2电话邮件网站短信彩信地图X轴综合"); -
-
//设置字体(default,default-bold,monospace,serif,sans-serif) -
msp.setSpan(new TypefaceSpan( "monospace"),0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); -
msp.setSpan(new TypefaceSpan( "serif"),2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); -
-
//设置字体大小(绝对值,单位:像素) -
msp.setSpan(new AbsoluteSizeSpan( 20),4, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); -
msp.setSpan(new AbsoluteSizeSpan( 20,true),6, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //第二个参数booleandip,如果为true,表示前面的字体大小单位为dip,否则为像素,同上。 -
-
//设置字体大小(相对值,单位:像素) 参数表示为默认字体大小的多少倍 -
msp.setSpan(new RelativeSizeSpan( 0.5f),8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //0.5f表示默认字体大小的一半 -
msp.setSpan(new RelativeSizeSpan( 2.0f),10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //2.0f表示默认字体大小的两倍 -
-
//设置字体前景色 -
msp.setSpan(new ForegroundColorSpan(Color.MAGENTA), 12,15, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置前景色为洋红色 -
-
//设置字体背景色 -
msp.setSpan(new BackgroundColorSpan(Color.CYAN), 15,18, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置背景色为青色 -
-
//设置字体样式正常,粗体,斜体,粗斜体 -
msp.setSpan(new StyleSpan(android.graphics.Typeface.NORMAL), 18,20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //正常 -
msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 20,22, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //粗体 -
msp.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 22,24, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //斜体 -
msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 24,27, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //粗斜体 -
-
//设置下划线 -
msp.setSpan(new UnderlineSpan(), 27,30, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); -
-
//设置删除线 -
msp.setSpan(new StrikethroughSpan(), 30,33, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); -
-
//设置上下标 -
msp.setSpan(new SubscriptSpan(), 34,35, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //下标 -
msp.setSpan(new SuperscriptSpan(), 36,37, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //上标 -
-
//超级链接(需要添加setMovementMethod方法附加响应) -
msp.setSpan(new URLSpan( "tel:4155551212"),37, 39, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //电话 -
msp.setSpan(new URLSpan( "mailto:webmaster@google.com"),39, 41, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //邮件 -
msp.setSpan(new URLSpan( "http://www.baidu.com"),41, 43, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //网络 -
msp.setSpan(new URLSpan( "sms:4155551212"),43, 45, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //短信使用sms:或者smsto: -
msp.setSpan(new URLSpan( "mms:4155551212"),45, 47, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //彩信使用mms:或者mmsto: -
msp.setSpan(new URLSpan( "geo:38.899533,-77.036476"),47, 49, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //地图 -
-
//设置字体大小(相对值,单位:像素) 参数表示为默认字体宽度的多少倍 -
msp.setSpan(new ScaleXSpan( 2.0f),49, 51, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //2.0f表示默认字体宽度的两倍,即X轴方向放大为默认字体的两倍,而高度不变 -
//SpannableString对象设置给TextView -
myTextView.setText(sp); -
-
myTextView.setMovementMethod(LinkMovementMethod.getInstance()); -
} - }
- 在使用SpannableString对象时要注意
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE等的作用:
- 用来标识在 Span 范围内的文本前后输入新的字符时是否把它们也应用这个效果。分别有Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)、Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)、Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)、Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)。
Android TextView设置个别字体样式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。