android SpannableString 使用详解(给文本添加效果)
2014-03-13 16:02
471 查看
import android.app.Activity; import android.graphics.Color; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.Spannable; import android.text.SpannableString; import android.text.style.AbsoluteSizeSpan; import android.text.style.BackgroundColorSpan; import android.text.style.ForegroundColorSpan; import android.text.style.ImageSpan; import android.text.style.StrikethroughSpan; import android.text.style.StyleSpan; import android.text.style.URLSpan; import android.text.style.UnderlineSpan; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class SpannableStringActivity extends Activity implements OnClickListener { private EditText tv; private Button underline_btn; private Button strike_btn; private Button style_btn; private Button font_btn; private Button color_btn1; private Button color_btn2; private Button url_btn; private Button image_btn; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (EditText) this.findViewById(R.id.tv); underline_btn = (Button) this.findViewById(R.id.underline_btn); strike_btn = (Button) this.findViewById(R.id.strike_btn); style_btn = (Button) this.findViewById(R.id.style_btn); font_btn = (Button) this.findViewById(R.id.font_btn); color_btn1 = (Button) this.findViewById(R.id.color_btn1); color_btn2 = (Button) this.findViewById(R.id.color_btn2); url_btn = (Button) this.findViewById(R.id.url_btn); image_btn = (Button) this.findViewById(R.id.image_btn); underline_btn.setOnClickListener(this); strike_btn.setOnClickListener(this); style_btn.setOnClickListener(this); font_btn.setOnClickListener(this); color_btn1.setOnClickListener(this); color_btn2.setOnClickListener(this); url_btn.setOnClickListener(this); image_btn.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.underline_btn: addUnderLineSpan(); break; case R.id.strike_btn: addStrikeSpan(); break; case R.id.style_btn: addStyleSpan(); break; case R.id.font_btn: addFontSpan(); break; case R.id.color_btn1: addForeColorSpan(); break; case R.id.color_btn2: addBackColorSpan(); break; case R.id.url_btn: addUrlSpan(); break; case R.id.image_btn: addImageSpan(); break; <span style="white-space:pre"> </span>} } /** * 超链接 */ private void addUrlSpan() { SpannableString spanString = new SpannableString("超链接"); URLSpan span = new URLSpan("tel:0123456789"); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } /** * 文字背景颜色 */ private void addBackColorSpan() { SpannableString spanString = new SpannableString("颜色2"); BackgroundColorSpan span = new BackgroundColorSpan(Color.YELLOW); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } /** * 文字颜色 */ private void addForeColorSpan() { SpannableString spanString = new SpannableString("颜色1"); ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } /** * 字体大小 */ private void addFontSpan() { SpannableString spanString = new SpannableString("36号字体"); AbsoluteSizeSpan span = new AbsoluteSizeSpan(36); spanString.setSpan(span, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } /** * 粗体,斜体 */ private void addStyleSpan() { SpannableString spanString = new SpannableString("BIBI"); StyleSpan span = new StyleSpan(Typeface.BOLD_ITALIC); spanString.setSpan(span, 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } /** * 删除线 */ private void addStrikeSpan() { SpannableString spanString = new SpannableString("删除线"); StrikethroughSpan span = new StrikethroughSpan(); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } /** * 下划线 */ private void addUnderLineSpan() { SpannableString spanString = new SpannableString("下划线"); UnderlineSpan span = new UnderlineSpan(); spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.append(spanString); } /** * 图片 */ private void addImageSpan() { Drawable drawable = getResources().getDrawable(id); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); //需要处理的文本,[smile]是需要被替代的文本 SpannableString spannable = new SpannableString(getText().toString()+"[smile]"); //要让图片替代指定的文字就要用ImageSpan ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE); //开始替换,注意第2和第3个参数表示从哪里开始替换到哪里替换结束(start和end) //最后一个参数类似数学中的集合,[5,12)表示从5到12,包括5但不包括12 spannable.setSpan(span, getText().length(),getText().length()+"[smile]".length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); setText(spannable);} }
相关文章推荐
- Android - 使用SpannableString设置复合文本
- Android 开发SpannableString和SpannableStringBuilder的使用详解
- android SpannableString使用详解
- android SpannableString使用详解
- 【Android进阶】SpannableString与SpannableStringBuilder使用
- Android:SpannableString属性详解
- android中SpannableString的使用
- Android 使用版本控制工具时添加忽略文件的方式(详解)
- android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)
- android中NavigationDrawer的使用以及添加drawer切换时的动画效果
- Android中ViewFlipper的使用及设置动画效果实例详解
- android中string.xml使用富文本
- Android中自定义ImageView添加文字设置按下效果详解
- Android使用XML的方式为背景添加渐变,描边,圆角的效果
- android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)
- android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)
- android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)
- 【android】SpannableString详解及使用SpannableString设置复合文本
- android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)
- Android Fragment详解,动态添加+静态使用+图+代码