SpannableString的用法详解

SpannableString能够更简便的设置文字样式。

知识准备:

方法:setSpan (Object what, int start, int end, int flags)
参数说明:
object what:对应的各种Span;
int start:开始应用指定Span的位置,索引从0开始;
int end:结束应用指定Span的位置,特效并不包括这个位置。比如如果这里数为3(即第4个字符),第4个字符不会有任何特效。
int flags:取值有如下四个
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE:前后都不包括,即在指定范围的前面和后面插入新字符都不会应用新样式 
Spannable.SPAN_EXCLUSIVE_INCLUSIVE:前面不包括,后面包括。即仅在范围字符的后面插入新字符时会应用新样式
Spannable.SPAN_INCLUSIVE_EXCLUSIVE:前面包括,后面不包括。
Spannable.SPAN_INCLUSIVE_INCLUSIVE:前后都包括。

flag的设置最后再说,这里先设为0。

1、设置颜色


String string = "今天晚上下雨啦!";
SpannableString spanColor = new SpannableString(string);
spanColor.setSpan(new ForegroundColorSpan(Color.parseColor("#ff3c2a")), string.indexOf("晚上"), string.indexOf("下"), 0);
mTv1.setText(spanColor);
当然,也可以直接设置角标实现:
String string = "今天晚上下雨啦!";
SpannableString spanColor = new SpannableString(string);
spanColor.setSpan(new ForegroundColorSpan(Color.parseColor("#ff3c2a")), 2, 4, 0);
mTv1.setText(spanColor);


2、设置背景颜色

代码:

String string = "今天晚上下雨啦!";
SpannableString spanColor = new SpannableString(string);
spanColor.setSpan(new BackgroundColorSpan(Color.parseColor("#ff3c2a")), string.indexOf("晚"), string.indexOf("下"), 0);
mTv1.setText(spanColor);

3、设置字体大小

代码:

String string = "今天晚上下雨啦!";
SpannableString spanColor = new SpannableString(string);
spanColor.setSpan(new AbsoluteSizeSpan(25), string.indexOf("晚"), string.indexOf("下"), 0);
mTv1.setText(spanColor);

4、设置粗斜体

代码:

String string = "今天晚上下雨啦!";
SpannableString spanColor = new SpannableString(string);
spanColor.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), string.indexOf("晚"), string.indexOf("下"), 0);
mTv1.setText(spanColor);

5、删除线

代码:

String string = "今天晚上下雨啦!";
SpannableString spanColor = new SpannableString(string);
spanColor.setSpan(new StrikethroughSpan(), string.indexOf("晚"), string.indexOf("下"), 0);
mTv1.setText(spanColor);

6、下划线

代码:

String string = "今天晚上下雨啦!";
SpannableString spanColor = new SpannableString(string);
spanColor.setSpan(new UnderlineSpan(), string.indexOf("晚"), string.indexOf("下"), 0);
mTv1.setText(spanColor);

7、替换图片

String string = "今天晚上下雨啦!";
SpannableString spanColor = new SpannableString(string);
Drawable d = getResources().getDrawable(R.mipmap.ic_launcher);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
spanColor.setSpan(span, string.indexOf("晚"), string.indexOf("下"), 0);
mTv1.setText(spanColor);

8、最后再解释flags属性的使用:

对EditText使用SpannableString ,如果我们设置Spannable.SPAN_EXCLUSIVE_INCLUSIVE,在“晚上”前面和后面都输入文字,前面的文字没有任何效果,后面的则不同,添加上相同的Span特效,(前面不应用特效,后面应用特效),其它几个Flags参数的含义不再赘述。


GitHub全部代码已传


  • 15
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CMake是一个跨平台的自动化构建工具,可以用于生成各种不同类型的构建文件,包括Makefile、Visual Studio解决方案、Xcode项目等。下面是CMake的使用方法详解: 1. 安装CMake 首先需要在官网上下载并安装CMake软件。安装完成后,可以在命令行中输入cmake --version来确认是否安装成功。 2. 创建一个CMakeLists.txt文件 在项目根目录下创建一个名为CMakeLists.txt的文件,该文件是CMake的核心配置文件,定义了项目的构建规则。可以使用文本编辑器或者IDE来创建这个文件。 3. 设置项目信息 在CMakeLists.txt文件中,需要设置项目的基本信息,包括项目名称、版本号、语言等。这可以通过使用project命令来实现。例如: ``` project(MyProject VERSION 1.0 LANGUAGES CXX) ``` 这里设置了项目名称为MyProject,版本号为1.0,使用C++作为编程语言。 4. 定义源文件 在CMakeLists.txt文件中,需要定义项目的源文件。可以使用add_executable或add_library命令来添加源文件。例如: ``` add_executable(myapp main.cpp) ``` 这里添加了一个名为myapp的可执行文件,它的源文件是main.cpp。 5. 添加依赖库 如果项目依赖于其他库,需要使用find_package或者add_subdirectory命令来添加依赖库。例如: ``` find_package(Boost REQUIRED COMPONENTS filesystem system) include_directories(${Boost_INCLUDE_DIRS}) target_link_libraries(myapp ${Boost_LIBRARIES}) ``` 这里添加了一个名为Boost的库,它的组件是filesystem和system。 6. 设置编译选项 在CMakeLists.txt文件中还可以设置编译选项,例如编译标志、链接标志等。可以使用target_compile_options和target_link_libraries命令来设置编译选项。例如: ``` target_compile_options(myapp PRIVATE -Wall -Wextra) target_link_libraries(myapp pthread) ``` 这里设置了编译标记为-Wall和-Wextra,链接标记为pthread。 7. 构建项目 完成以上步骤后,就可以使用cmake命令来生成构建文件,例如: ``` mkdir build cd build cmake .. ``` 这里在项目根目录下创建了一个build目录,并在其中使用cmake命令生成Makefile文件。 最后,使用make命令来编译和构建项目。例如: ``` make ``` 这里编译和构建了项目,并生成myapp可执行文件。 以上就是CMake的使用方法详解。通过CMake,可以方便地管理项目的构建过程,实现跨平台的构建。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值