android如何改变editText控件中部分文字的格式

作者:ganchuanpu 时间:2023-08-24 18:58:36 

我们在使用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;
 }
}
}

来源:http://www.cnblogs.com/ganchuanpu/p/6505983.html

标签:android,edittext
0
投稿

猜你喜欢

  • 利用unity代码C#封装为dll的步骤分享

    2023-12-02 00:31:00
  • SpringBoot实现项目健康检查与监控

    2023-10-28 19:14:25
  • 每天学Java!一分钟了解JRE与JDK

    2021-06-13 11:52:41
  • Hibernatede 一对多映射配置方法(分享)

    2021-08-27 02:26:32
  • Android编程实现自定义系统菜单背景的方法

    2023-07-16 22:02:51
  • Java Kafka实现延迟队列的示例代码

    2022-01-11 16:32:11
  • java中获取json的所有key方法

    2023-10-15 06:15:26
  • Intellij IDEA导入JAVA项目并启动(图文教程)

    2021-11-05 12:30:18
  • 浅谈Java中Lambda表达式的相关操作

    2023-09-17 12:00:58
  • WinForm项目开发中NPOI用法实例解析

    2021-09-17 16:53:57
  • java中BigDecimal和0比较的示例代码

    2022-07-05 04:58:18
  • Winform下实现图片切换特效的方法

    2023-04-20 21:26:28
  • c#实现的操作oracle通用类

    2022-01-31 15:08:37
  • SpringBoot结合Neo4j自定义cypherSql的方法

    2022-05-18 00:41:07
  • mybatis注解与xml常用语句汇总

    2022-05-17 18:39:47
  • Android仿今日头条APP实现下拉导航选择菜单效果

    2023-09-15 07:21:05
  • Java面试题冲刺第二十九天--JVM3

    2021-05-24 05:34:26
  • jvm运行原理以及类加载器实例详解

    2023-10-23 18:39:03
  • C++之异常处理详解

    2023-04-10 10:22:00
  • Android 自定义标题栏的实例详解

    2021-11-06 00:53:04
  • asp之家 软件编程 m.aspxhome.com