android如何改变editText控件中部分文字的格式
程序员文章站
2023-12-04 15:52:16
我们在使用edittext控件的时候,会遇到这样的一问题,就是我在输入时候,当我选择让文字变粗时,我输入的文字就会变粗,当我去掉选择时,再输入文字时,文字就是正常情况了。...
我们在使用edittext控件的时候,会遇到这样的一问题,就是我在输入时候,当我选择让文字变粗时,我输入的文字就会变粗,当我去掉选择时,再输入文字时,文字就是正常情况了。
这种情况,大家一般认为很简单啊。edittext中不是有settypeface这个方法吗。只要使用edit_temp.settypeface(typeface.defaultfromstyle(typeface.normal));就可以了。可是问题来了。这种方法,是将edittext中所有的文字的格式全变了。可是我想要的格式是这样的: 正常格式变粗的格式正常的格式
public class fragmentaddnote extends fragment implements onclicklistener { //定义输入文本控件 private edittext edit_temp; //定义屏幕下面菜单栏--字体变粗按钮 private linearlayout linearlayout_bold; private imageview img_bold; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.main_addnote, container, false); initview(view); return view; } public void initview(view view) { //初始化屏幕下面菜单栏--字体变粗按钮 linearlayout_bold = (linearlayout)view.findviewbyid(r.id.linearlayout_bold); linearlayout_bold.setonclicklistener(this); img_bold = (imageview)view.findviewbyid(r.id.img_bold); //初始化输入文本控件 edit_temp = (edittext)view.findviewbyid(r.id.edit_temp); edit_temp.addtextchangedlistener(new edittextchangedlistener()); } class edittextchangedlistener implements textwatcher{ //定义当前输入的字符数 private int charcount = 0; //s:变化后的所有字符 public void aftertextchanged(editable s) { //将光标点,移动到最后一个字 edit_temp.setselection(s.length()); } //s:变化前的所有字符; start:字符开始的位置; count:变化前的总字节数;after:变化后的字节数 public void beforetextchanged(charsequence s, int start, int count,int after) { } //s:变化后的所有字符;start:字符起始的位置;before: 变化之前的总字节数;count:变化后的字节数 public void ontextchanged(charsequence s, int start, int before, int count) { //判断当前输入的字符数,与文本框内的字符数长度是否一样,如果一样,则不进行操作 //主要用来跳出循环,当改变文字时,ontextchanged就认为有所变化,会进入死循环,所以采用这种方式结束循环 if(charcount!=edit_temp.length()) { //将当前字符串的长度给输入字符串变量 charcount = edit_temp.length(); //定义spannablestring,它主要的用途就是可以改变edittext,textview中部分文字的格式,以及向其中插入图片等功能 spannablestring ss = new spannablestring(s); if(linearlayout_bold.gettag().tostring().equals("1")) { ss.setspan(new stylespan(typeface.bold_italic), start, s.length(), spanned.span_exclusive_exclusive); edit_temp.settext(ss); } } } } @override public void onclick(view v) { switch (v.getid()) { case r.id.linearlayout_bold: if(linearlayout_bold.gettag().tostring().equals("0")) { img_bold.setimageresource(r.drawable.ic_editor_bar_rtf_bold_on); linearlayout_bold.settag("1"); //edit_temp.settypeface(typeface.defaultfromstyle(typeface.bold)); }else if(linearlayout_bold.gettag().tostring().equals("1")) { img_bold.setimageresource(r.drawable.ic_editor_bar_rtf_bold); linearlayout_bold.settag("0"); //edit_temp.settypeface(typeface.defaultfromstyle(typeface.normal)); } break; default: break; } } }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!