SpannableString与SpannableStringBuilder DecimalFormat 和 BigFormat
来源:互联网 发布:安徽省大数据产业协会 编辑:程序博客网 时间:2024/05/17 09:09
一、SpannableString与SpannableStringBuilder
1、SpannableString、SpannableStringBuilder与String的关系
2、SpannableString与SpannableStringBuilder的区别
//使用SpannableString,必须一次传入,构造完成 SpannableString word = new SpannableString("欢迎光临我的博客"); //使用SpannableStringBuilder,可以使用append()再添加 SpannableStringBuilder multiWord = new SpannableStringBuilder(); multiWord.append("欢迎光临"); multiWord.append("我的"); multiWord.append("博客");
因为SpannableString和SpannableStringBuilder都实现了CharSequence接口,可以直接通过TextView.setText()设置给TextView
3、SetSpan()方法
函数意义:给SpannableString或SpannableStringBuilder特定范围的字符串设定Span样式,可以设置多个(比如同时加上下划线和删除线等),Falg参数标识了当在所标记范围前和标记范围后紧贴着插入新字符时的动作,即是否对新插入的字符应用同样的样式。(这个后面会具体举例说明)
参数说明:
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的作用是用来指定范围前后输入新的字符时,会不会应用效果的,所以我们利用EditText来显示SpannableString
(1)、布局XML中加入一个EditText控件:
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context="com.example.try_spannable_blog.MainActivity" >
- <EditText
- android:id="@+id/edit"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
- </RelativeLayout>
- public class MainActivity extends Activity {
- private EditText editText;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- editText = (EditText)findViewById(R.id.edit);
- //改变字体颜色
- //先构造SpannableString
- SpannableString spanString = new SpannableString("欢迎光临Harvic的博客");
- //再构造一个改变字体颜色的Span
- ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE);
- //将这个Span应用于指定范围的字体
- spanString.setSpan(span, 1, 3, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
- //设置给EditText显示出来
- editText.setText(spanString);
- }
- }
分别在设置Span的前面和后面加入新文字,结果是这样的
在前面和后面都加入虾米两个字,可见,前面的虾米没有任何效果,后面的则不同,添加上相同的Span特效,这是由于我们设置了Spannable.SPAN_EXCLUSIVE_INCLUSIVE的原因,即(前面不应用特效,后面应用特效),其它几个Flags参数的含义想必大家也都清楚了。在此就不再赘述。
4、使用:
SpannableString spanString = new SpannableString("欢迎光临Harvic的博客"); //再构造一个改变字体颜色的Span ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE); //将这个Span应用于指定范围的字体 spanString.setSpan(span, 1, 5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); //设置给EditText显示出来 editText.setText(spanString);
除了设置字体颜色 ForegroundColorSpan,另外还有字体背景颜色 BackgroundColorSpan,字体大小 AbsoluteSizeSpan,字体样式 StyleSpan,删除线 StrikethroughSpan,下划线 UnderlineSpan,图片置换 ImageSpan
二、DecimalFormat 和 BigDecimal
1、DecimalFormat
double d1 = 1234.5678; double d2 = 111111111113.141592654; //常用的Pattern字符为 0 和 # //0 表示阿拉伯数字,本位没有也显示0 //# 表示阿拉伯数字,本位没有显示为空 //若小数位显示不全都会四舍五入 DecimalFormat df1 = new DecimalFormat("00000.00000"); DecimalFormat df2 = new DecimalFormat("##.###"); Log.d("test_decimalFormat", df1.format(d1)); //01234.56780 Log.d("test_decimalFormat", df2.format(d1)); //1234.568 DecimalFormat df3 = new DecimalFormat(); //以百分数的形式显示 并且保留两位小数, 0和#还是上面的意义 df3.applyPattern("#0.00%"); Log.d("test_decimalFormat", df3.format(d1)); //123456.78% //以科学计数法的形式显示,保留4位小数E后面的字符必须是 0 df3.applyPattern("0.0000E0"); Log.d("test_decimalFormat", df3.format(d2)); //1.1111E11 //格式化输出 若高位没有明确的指出(如这里的万位)要按那种格式格式化,那么按照 第一个 , 为准 df3.applyPattern("#,###.000"); Log.d("test_decimalFormat", df3.format(d2)); //111,111,111,113.142
2、BigDecimal
可以将一个科学计数法表示的数字转换成double 或 float,可以直接这么使用 new BigDecimal("1.001E5");
下面附加一个连接,这里比较详细的描述了BigDecimal 的使用方法。
http://blog.csdn.net/jackiehff/article/details/8582449- SpannableString与SpannableStringBuilder DecimalFormat 和 BigFormat
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- android SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder
- SpannableString与SpannableStringBuilder使用
- php生成的csv, 无法完整显示带前导0的数字
- POJ 1094 Sorting It All Out【拓扑排序】
- codevs2822爱在心中
- FastCV Public API最新版本1.7.1概述
- Systrace Walkthrough
- SpannableString与SpannableStringBuilder DecimalFormat 和 BigFormat
- lightoj 1319 - Monkey Tradition (中国剩余定理)
- Android新手入门2016(13)--阻塞对话框PopupWindow
- Linux内核源码分析方法
- 【LeetCode】131.Palindrome Partitioning回文划分
- youtube下载视频好工具插件
- Linux apache安装
- Only the original thread that created a view hierarchy can touch its views.
- poj3624 Charm Bracelet(01背包)