SpannableString 可以设置TextView中文本显示为不同的风格。如字体,大小,颜色,背景色,下划线,删除线,超链接等。
public class TestSpannableActivity extends Activity { private EditText mEditText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.spannablestring_test_layout); mEditText = (EditText) findViewById(R.id.spannableString_test_edittext); } public void underLineListener(View v){ //下划线 SpannableString string = new SpannableString("文本下面有下划线"); UnderlineSpan span = new UnderlineSpan(); string.setSpan(span, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //前五个字符下有下划线 mEditText.append(string); } public void strikethroughSpanListener(View v){ //删除线 String str = "文本被删除"; SpannableString string = new SpannableString(str); StrikethroughSpan span = new StrikethroughSpan(); //删除线 string.setSpan(span, 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //全部被删除 mEditText.append(string); } public void textSizeListener(View v){ //字体大小 String str = "前面的字体大后面的字体小"; SpannableString string = new SpannableString(str); AbsoluteSizeSpan span = new AbsoluteSizeSpan(80); //以像素为单位 string.setSpan(span, 0, string.length()/2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); mEditText.append(string); } public void textColorListener(View v){ //字体颜色 String str = "颜色不同"; SpannableString string = new SpannableString(str); ForegroundColorSpan span = new ForegroundColorSpan(Color.RED); string.setSpan(span, 0, string.length()/2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); mEditText.append(string); } public void textBackgroundColorListener(View v){ //字体背景颜色 String str = "背景色不同"; SpannableString string = new SpannableString(str); string.setSpan(new BackgroundColorSpan(Color.YELLOW), 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //设置背景色 mEditText.append(string); } public void setTextListener(View v){ //也可以把这些属性综合起来 String str = "背景色不同字体大小颜色下划线删除线"; SpannableString string = new SpannableString(str); string.setSpan(new BackgroundColorSpan(Color.YELLOW), 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //设置背景色 string.setSpan(new AbsoluteSizeSpan(80), 3, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //设置字体大小 string.setSpan(new ForegroundColorSpan(Color.GREEN), 5, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //设置字体颜色 string.setSpan(new StrikethroughSpan(), 6, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //设置删除线 string.setSpan(new UnderlineSpan(), 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //设置下划线 mEditText.append(string); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/spannableString_test_edittext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="false" android:inputType="none"/> <GridLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:columnCount="4"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下划线" android:onClick="underLineListener"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="删除线" android:onClick="strikethroughSpanListener"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="字体大小" android:onClick="textSizeListener"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="颜色" android:onClick="textColorListener"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="文本背景色" android:onClick="textBackgroundColorListener"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="all" android:onClick="setTextListener"/> </GridLayout> </LinearLayout>