android SpannableString

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如下:


<?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>

显示效果如下: 有点丑。不过功能是有的。


android SpannableString_第1张图片

你可能感兴趣的:(android SpannableString)