最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
android如何改变editText控件中部分文字的格式
时间:2022-06-25 23:27:50 编辑:袖梨 来源:一聚教程网
我们在使用editText控件的时候,会遇到这样的一问题,就是我在输入时候,当我选择让文字变粗时,我输入的文字就会变粗,当我去掉选择时,再输入文字时,文字就是正常情况了。
这种情况,大家一般认为很简单啊。editText中不是有setTypeface这个方法吗。只要使用edit_temp.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));就可以了。可是问题来了。这种方法,是将editText中所有的文字的格式全变了。可是我想要的格式是这样的: 正常格式变粗的格式正常的格式
代码如下 | 复制代码 |
publicclassFragmentAddNoteextendsFragmentimplementsOnClickListener { //定义输入文本控件 privateEditText edit_temp; //定义屏幕下面菜单栏--字体变粗按钮 privateLinearLayout linearLayout_Bold; privateImageView img_Bold; @Override publicView onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.main_addnote, container,false); initView(view); returnview; } publicvoidinitView(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(neweditTextChangedListener()); } classeditTextChangedListenerimplementsTextWatcher{ //定义当前输入的字符数 privateintCharCount =0; //s:变化后的所有字符 publicvoidafterTextChanged(Editable s) { //将光标点,移动到最后一个字 edit_temp.setSelection(s.length()); } //s:变化前的所有字符; start:字符开始的位置; count:变化前的总字节数;after:变化后的字节数 publicvoidbeforeTextChanged(CharSequence s,intstart,intcount,intafter) { } //S:变化后的所有字符;start:字符起始的位置;before: 变化之前的总字节数;count:变化后的字节数 publicvoidonTextChanged(CharSequence s,intstart,intbefore,intcount) { //判断当前输入的字符数,与文本框内的字符数长度是否一样,如果一样,则不进行操作 //主要用来跳出循环,当改变文字时,onTextChanged就认为有所变化,会进入死循环,所以采用这种方式结束循环 if(CharCount!=edit_temp.length()) { //将当前字符串的长度给输入字符串变量 CharCount = edit_temp.length(); //定义SpannableString,它主要的用途就是可以改变editText,TextView中部分文字的格式,以及向其中插入图片等功能 SpannableString ss =newSpannableString(s); if(linearLayout_Bold.getTag().toString().equals("1")) { ss.setSpan(newStyleSpan(Typeface.BOLD_ITALIC), start, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); edit_temp.setText(ss); } } } } @Override publicvoidonClick(View v) { switch(v.getId()) { caseR.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)); }elseif(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; } } } |
相关文章
- 王者荣耀侦探能力大测试攻略 王者荣耀侦探能力大测试怎么过 11-22
- 无期迷途主线前瞻兑换码是什么 11-22
- 原神欧洛伦怎么培养 11-22
- 炉石传说网易云音乐联动怎么玩 11-22
- 永劫无间手游确幸转盘怎么样 11-22
- 无期迷途主线前瞻兑换码是什么 无期迷途主线前瞻直播兑换码介绍 11-22