package com.pinecone.technology.mcommerce.learning.android.chapter04.text; import com.pinecone.technology.mcommerce.learning.android.chapter04.R; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.text.Spannable; import android.text.Spanned; import android.text.style.AbsoluteSizeSpan; import android.text.style.BackgroundColorSpan; import android.text.style.BulletSpan; import android.text.style.ForegroundColorSpan; import android.text.style.RelativeSizeSpan; import android.text.style.StrikethroughSpan; import android.text.style.StyleSpan; import android.text.style.SubscriptSpan; import android.text.style.SuperscriptSpan; import android.text.style.TypefaceSpan; import android.text.style.UnderlineSpan; import android.widget.TextView; public class SpannableActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.c04_stlye_spannable); TextView tv3 = (TextView) this.findViewById(R.id.tv3); tv3.setText("默认、35像素、默认一半、默认两倍\n" + "前景色、背景色\n" + "正常、粗体、斜体、粗斜体\n" + "下划线、删除线\n" + "下标、上标\n" + "项目符号", TextView.BufferType.SPANNABLE); Spannable spn = (Spannable) tv3.getText(); // 设置字体(default,default-bold,monospace,serif,sans-serif) spn.setSpan(new TypefaceSpan("monospace"), 0, spn.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 设置字体大小(绝对值,单位:像素)第二个参数boolean // dip,如果为true,表示前面的字体大小单位为dip,否则为像素,同上 spn.setSpan(new AbsoluteSizeSpan(35), 3, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 设置字体大小(相对值,单位:像素) 参数表示为默认字体大小的多少倍 spn.setSpan(new RelativeSizeSpan(0.5f), 8, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 0.5f表示默认字体大小的一半 spn.setSpan(new RelativeSizeSpan(2.0f), 13, 17, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 2.0f表示默认字体大小的两倍 // // 设置字体前景色 spn.setSpan(new ForegroundColorSpan(Color.MAGENTA), 18, 21, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 设置前景色为洋红色 // 设置字体背景色 spn.setSpan(new BackgroundColorSpan(Color.CYAN), 22, 25, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 设置背景色为青色 // 设置字体样式正常,粗体,斜体,粗斜体 spn.setSpan(new StyleSpan(android.graphics.Typeface.NORMAL), 26, 28, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 正常 spn.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 29, 31, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 粗体 spn.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 32, 34, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 斜体 spn.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 35, 38, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 粗斜体 // 设置下划线 spn.setSpan(new UnderlineSpan(), 39, 42, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 设置删除线 spn.setSpan(new StrikethroughSpan(), 43, 46, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 设置上下标 spn.setSpan(new SubscriptSpan(), 47, 49, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 下标 spn.setSpan(new SuperscriptSpan(), 50, 52, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 上标 // // 超级链接(需要添加setMovementMethod方法附加响应) // spn.setSpan(new URLSpan("tel:7028023379"), 53, 55, // Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 电话 // spn.setSpan(new URLSpan("mailto:leeivan2008@gmail.com"), 56, 58, // Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 邮件 // spn.setSpan(new URLSpan("http://www.google.com"), 59, 61, // Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 网址 // 设置项目符号 spn.setSpan(new BulletSpan( android.text.style.BulletSpan.STANDARD_GAP_WIDTH, Color.GREEN), 53, spn.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // tv3.setMovementMethod(movement) } }