【Android开发日记】之基础篇(一)——TextView+SpannableStringBuilder

TextView是控件中最最基础的一个控件,也是最简单的一个控件。但如果仅此,我不会专门为TextView写一篇文章。最近发现了Android中有趣的一个类,那就是标题上写的SpannableStringBuilder。那么它是个什么东西呢?它可以为你的文字加上各种效果,像变色,各种符号,斜体,图片替换,高亮等等。如果想要文字加上一点常见的效果,我们大可不必再自己去写一个自定义的View,使用SpannableStringBuilder就能满足你的需求了。

一、TextView

首先是TextView的准备,跟平常的一样,先在布局文件中写好控件,再在代码中通过id获得引用。

<LinearLayout 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"
android:orientation="vertical"
> <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text_view" /> <Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button" /> </LinearLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); tv = (TextView)findViewById(R.id.textView1);
bt = (Button)findViewById(R.id.button1);
bt.setOnClickListener(this); }

二、SpannableStringBuilder

SpannableStringBuilder其实讲白了就是一个文本编辑器,通过套用不同的模式来改变文本的样子,其主要方法为

    /**
* Mark the specified range of text with the specified object.
* The flags determine how the span will behave when text is
* inserted at the start or end of the span's range.
*/
public void setSpan(Object what, int start, int end, int flags) {
setSpan(true, what, start, end, flags);
}

第一个参数是一个实现ParcelableSpan接口的一个类;

第二三个参数就是要改变文本的位置,起始点和终点;

第四个参数是用来对第二个和第三个参数进一步限制和说明的。

三、文本的例子

  1. 例子:通过点击按钮来改变文字
  2. 其中关键的点击事件的代码如下
    /*
    * 注意事项: SpannableStringBuilder.setSpan (new
    * ForegroundColorSpan(Color.RED), 1, 3,
    * Spannable.SPAN_EXCLUSIVE_INCLUSIVE); 第一个参数:颜色 第二个参数:开始位置 第三个参数:终止位置
    * 第三个参数:SPAN_EXCLUSIVE_INCLUSIVE.用来对第二个和第三个参数进一步限制和说明
    * 此处表示不包含1,但是包含3.从字面意思也很好理解
    */
    @Override
    public void onClick(View v) {
    String str = "Hello Cpacm! \nA preservation of the memory";
    SpannableStringBuilder builder = new SpannableStringBuilder(str);
    //设置颜色
    builder.setSpan(new ForegroundColorSpan(Color.RED), 0, 5,
    // setSpan时需要指定的 flag,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括).
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    //超链接
    builder.setSpan(new URLSpan("https://www.google.com"), 6, 12,
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    //粗斜体
    builder.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 12, 15,
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    //删除线
    builder.setSpan(new StrikethroughSpan(), 16, 29,
    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    //图片替换文字
    Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
    d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
    // 创建ImageSpan
    ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
    // 用ImageSpan替换文本
    builder.setSpan(span, 29, 31, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); builder.setSpan(new ForegroundColorSpan(Color.RED), 31, 36,
    Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    //删除文字
    builder.delete(36, 42);
    //添加文字
    builder.append("thing");
    //将文字赋予TextView
    tv.setText(builder);
    }
  3. 当然Span的类型不止这么几种,查了一下API,还有很多类型的Span,如下图。
    aaarticlea/png;base64,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" alt="" />
    用法都是一样的
  4. 运行截图
    【Android开发日记】之基础篇(一)——TextView+SpannableStringBuilder     【Android开发日记】之基础篇(一)——TextView+SpannableStringBuilder

四、结束语

说来惭愧,好久没有更新这个系列了,也是一直没有机会弄Android界面的原因。今天看到一个文字变化的工具类,所以就想着把TextView做了一下。

 
 

========================================

作者:cpacm
出处:(http://www.cnblogs.com/cpacm/p/4099031.html

上一篇:adb shell后出现error解决方案


下一篇:jquery 无缝轮播