[转]Android中的一个TextView中的字体设置不同大小

摘要:
呵呵,当然,编写两个TextView很容易设置“);//这是原始显示。我希望title.setText(“YourbigslandADVENTURE!”)变为粗体{finalSpannableStringBuildersb=newSpannaableStringBuilder;finalForegroundColorSpanfcs=newForeground ColorSpan;//SpantosettextcolortosomeRGB值finalStyleSpanbs=newStyleSpan;//Spanstomaketextboldsb.setSpan;//为前4个字符设置文本颜色{finalSpannableStringBuildersb=newSpannaableStringBuilder;finalForegroundColorSpanfcs=newForeground ColorSpan;//SpantosettextcolortosomeRGB值finalStyleSpanbs=newStyleSpan;//Spanstomaketextboldsb.setSpan;//为前4个字符设置文本颜色此外Android帮助我们封装简单的方法“);然而,对我来说,使用这种方法设置小部件中的字体大小是不可行的。这是另一个问题,但你不能使用html代码设置小部件的字体大小吗?如果你经常在TextView中设置字体,你最好使用Spannable或SpannableBuilder。互联网上说html.fromHtml不是很有效,因为它是通过一个大的xml解析的。

本文转自:http://txlong-onz.iteye.com/blog/1142781

如图,这个是桌面Widget中的截图,最好是通过一个TextView实现,这是我提出的问题,近几天解决。呵呵,当然写两个TextView很简单也很容易设置。

Java代码 复制代码收藏代码[转]Android中的一个TextView中的字体设置不同大小第3张
  1. title.setText("Yourbigisland<b>ADVENTURE!</b>");//这是原样显示,我想让加粗
title.setText("Your big island <b>ADVENTURE!</b>");//这是原样显示,我想让加粗

还有,我想能不能类似的给上边那样通过html标签设置样式。网上搜过,果然可以。

Java代码 复制代码收藏代码[转]Android中的一个TextView中的字体设置不同大小第3张
  1. {
  2. finalSpannableStringBuildersb=newSpannableStringBuilder("yourtexthere");
  3. finalForegroundColorSpanfcs=newForegroundColorSpan(Color.rgb(158,158,158));//SpantosettextcolortosomeRGBvalue
  4. finalStyleSpanbss=newStyleSpan(android.graphics.Typeface.BOLD);//Spantomaketextbold
  5. sb.setSpan(fcs,0,4,Spannable.SPAN_INCLUSIVE_INCLUSIVE);//Setthetextcolorforfirst4characters
  6. sb.setSpan(bss,0,4,Spannable.SPAN_INCLUSIVE_INCLUSIVE);//makethemalsobold
  7. yourTextView.setText(sb);
  8. }
{
   final SpannableStringBuilder sb = new SpannableStringBuilder("your text here");
   final ForegroundColorSpan fcs = new ForegroundColorSpan(Color.rgb(158, 158, 158)); // Span to set text color to some RGB value
   final StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD); // Span to make text bold
   sb.setSpan(fcs, 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE); // Set the text color for first 4 characters
   sb.setSpan(bss, 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE); // make them also bold
   yourTextView.setText(sb);
}

另外android帮我们封装了简单的方法。

Java代码 复制代码收藏代码[转]Android中的一个TextView中的字体设置不同大小第3张
  1. title.setText(Html.fromHtml("Yourbigisland<b>ADVENTURE!</b>"));
title.setText(Html.fromHtml("Your big island <b>ADVENTURE!</b>")); 

但是,我通过这个方法,在widget中设置,不太可行。又是个疑问了,但到在widget中通过html代码设置字体大小不行么?

如果你经常的使用设置TextView中的字体,最好使用Spannable或SpannableBuilder之类的。网上说Html.fromHtml不是很高效,因为这是通过一个很大的xml来解析的。

我再试试Spannable

Java代码 复制代码收藏代码[转]Android中的一个TextView中的字体设置不同大小第3张
  1. TextViewTV=(TextView)findViewById(R.id.mytextview01);
  2. SpannableWordtoSpan=newSpannableString("Iknowjusthowtowhisper,AndIknowjusthowtocry,Iknowjustwheretofindtheanswers");
  3. WordtoSpan.setSpan(newForegroundColorSpan(Color.BLUE),15,30,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  4. TV.setText(WordtoSpan);
TextView TV = (TextView)findViewById(R.id.mytextview01); 
Spannable WordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");        
WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
TV.setText(WordtoSpan);

经过测试通过这种方法还是不能够改变widget中的字体大小。

Java代码 复制代码收藏代码[转]Android中的一个TextView中的字体设置不同大小第3张
  1. SpannableWordtoSpan=newSpannableString("大字小字");
  2. WordtoSpan.setSpan(newAbsoluteSizeSpan(11),0,1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  3. WordtoSpan.setSpan(newAbsoluteSizeSpan(21),2,3,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  4. remoteViews.setCharSequence(R.id.text11,"setText",WordtoSpan.toString());
  5. ComponentNamecom=newComponentName("com.jftt.widget","com.jftt.widget.MyWidgetProvider");
  6. appWidgetManager.updateAppWidget(com,remoteViews);
Spannable WordtoSpan = new SpannableString("大字小字");
WordtoSpan.setSpan(new AbsoluteSizeSpan(11), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
WordtoSpan.setSpan(new AbsoluteSizeSpan(21), 2, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
remoteViews.setCharSequence(R.id.text11, "setText", WordtoSpan.toString());
ComponentName com = new ComponentName("com.jftt.widget", "com.jftt.widget.MyWidgetProvider");
appWidgetManager.updateAppWidget(com, remoteViews);

经过我的修改终于成功了,原来试试自己使用错误啊。下边是正确代码。

Java代码 复制代码收藏代码[转]Android中的一个TextView中的字体设置不同大小第3张
  1. SpannableWordtoSpan=newSpannableString("大字小字");
  2. WordtoSpan.setSpan(newAbsoluteSizeSpan(20),0,2,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  3. WordtoSpan.setSpan(newAbsoluteSizeSpan(14),2,4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  4. remoteViews.setCharSequence(R.id.text11,"setText",WordtoSpan);
  5. ComponentNamecom=newComponentName("com.jftt.widget","com.jftt.widget.MyWidgetProvider");
  6. appWidgetManager.updateAppWidget(com,remoteViews);
Spannable WordtoSpan = new SpannableString("大字小字");
WordtoSpan.setSpan(new AbsoluteSizeSpan(20), 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
WordtoSpan.setSpan(new AbsoluteSizeSpan(14), 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
remoteViews.setCharSequence(R.id.text11, "setText", WordtoSpan);
ComponentName com = new ComponentName("com.jftt.widget", "com.jftt.widget.MyWidgetProvider");
appWidgetManager.updateAppWidget(com, remoteViews);

相信对比可以看出我错在哪里了吧!是的,我错误的使用了toString方法。

效果如图:

免责声明:文章转载自《[转]Android中的一个TextView中的字体设置不同大小》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Centos(64位)安装Hbase详细步骤自己画WinForm 皮肤包括默认控件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Mac下卸载删除nvm和node

nvm是Mac下的node管理工具,有点类似管理Ruby的rvm,nvm是一个独立于node/npm的外部shell脚本。...

codeforces 765 F Souvenirs 线段树+set

问题的含义:多个查询的间隔中两个数字之差的绝对值的最小值:可以根据查询的l对脱机查询进行排序,并且可以从r到l进行反向查询,并且间隔i+1到n的每次更新都可以确保此更新不会影响下一次和后续更新。因为当两个区间相互覆盖时,具有较小l的区间的值必须小于或等于另一个区间,因此可以绘制一个图来理解。...

MySQL锁详解

MySQL锁详解update语句执行流程MySQL的锁介绍按照锁的粒度来说,MySQL主要包含三种类型(级别)的锁定机制:全局锁:锁的是整个database。由MySQL的SQLlayer层实现的表级锁:锁的是某个table。由MySQL的SQLlayer层实现的行级锁:锁的是某行数据,也可能锁定行之间的间隙。...

shell脚本之数组

declare-AARRAY_NAME:声明关联数组。数组中元素的赋值方式:一次只赋值一个元素;ARRAY_NAME[INDEX]=value一次赋值全部元素;ARRAY_NAME=注意:元素与元素之间使用空格字符隔开只赋值特定元素;这种称之为稀疏格式的数组。/bin/bash#declare-aranddeclare-imax=0foriin{1..10}...

一起学习Avalonia(十二)

可以使用数据模板自定义和显示数据模板模板。文档中介绍了Avalonia的基本数据模板。PublicstringFirstName{get;set;}publicstringLastName{get;set;}扩展使用文档最后介绍了扩展使用,包括2个模型。Student和Teacher。在MainWindowViewModel中创建属性Content。此属性是...

搭建我的世界服务器(史上最详细) java环境配置 ,免费内网穿透,家庭用电脑也欧克

服务器部署周末想要和好基友联机?这里有最简单的开服教程!最后打开我的世界输入服务器ip,和你自己在内网穿透网站设置的端口连接即可成功要想服务器稳定运行,要保证命令窗口和端口映射一直开着...