android如何改变editText控件中部分文字的格式
作者:ganchuanpu 发布时间:2023-08-24 18:58:36
标签:android,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;
}
}
}
来源:http://www.cnblogs.com/ganchuanpu/p/6505983.html
0
投稿
猜你喜欢
- 概述: 当希望能直接在数据库语言中只检索符合条件的记录,不需要再通过程序对其做处理时,SQL语句分页
- mybatis if test判断入参的值1.第一种判断方式<if test=' requisition != null an
- SpringBoot @ComponentScan的使用SpringBoot的启动类中有一个@ComponentScan,之前项目由于这个注
- 前言String 类在Java中是很常用的类,很重要的类,在后续的学习中经常会用到,是后续学习的基础一、认识String1.JDK中的Str
- 本文实例为大家分享了Android自定义View之组合控件,仿电商app顶部栏的相关代码,供大家参考,具体内容如下效果图:分析:左右两边可以
- 批量添加,批量更新之前判断是否已经存在批量添加之前判断是否已经存在,foreach separator用UNION ALL。批量
- 下截JNative组件jnative.sourceforge.net/ 到这里下载JNative开源项目,我下载的是1.3.2解压JNati
- 引言Java届很难得有读百十行代码就能增加修炼的机会,这里有一个。通常,我在看书的时候一般不写代码,因为我的脑袋被设定成单线程的,一旦同时喂
- 本文实例讲述了C#多线程之Thread中Thread.IsAlive属性用法。分享给大家供大家参考。具体如下:Thread.IsAlive属
- /* * Copyright 2012-2013 The Haohui Network Cor
- 概要设计模式是一门艺术,如果真正了解这门艺术,你会发现,世界都将变得更加优美。定义定义一个用于创建对象的接口,让其子类去决定实例化那个类使用
- 一、猜想数据存放路径微信现在是老少皆宜,大街小巷都在使用,已经替代了传统的短信聊天方式了,只要涉及到聊天就肯定有隐私消息,那么本文就来讲解如
- 背景在Java中一个回调的操作是一个在一些操作完成之后被传递到另一个函数中并且被执行的函数。一个回调函数既可以被同步或者异步执行。在一个同步
- 用Java编写简单的五子棋,供大家参考,具体内容如下前言这两天在空闲时间做了个五子棋项目,分享给大家看一下,界面是这样的:界面很丑我知道,本
- 一、前序遍历1.题目描述给你二叉树的根节点 root ,返回它节点值的 前序 遍历。2.输入输出示例示例 1:输入:root = [1,nu
- 限流器算法目前常用限流器算法为两种:令牌桶算法和漏桶算法,主要区别在于:漏桶算法能够强行限制请求速率,平滑突发请求,而令牌桶算法在限定平均速
- 如何建立哈夫曼树的,网上搜索一堆,这里就不写了,直接给代码。1.哈夫曼树结点类:HuffmanNode.h#ifndef HuffmanNo
- 我想每个写项目的人,都肯定会遇到控制权限这个问题.例如这个这个链接只能管理员访问,那个链接丫只能超级管理员访问等等,实现方式也有多种多样,控
- 这篇文章主要介绍了Spring使用@Autowired为抽象父类注入依赖代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一
- 1.application.yml中添加两个datasourceserver: port: 8080spring: application: