閱讀358 返回首頁    go 阿裏雲 go 技術社區[雲棲]


android中TextView的SpannableString小結

/**
* 設置前景色
* @param tv
*/
private void setForegroundColorSpan(TextView tv) {  
   SpannableString spanString = new SpannableString("前景色textview");  
   ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE);  
   spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
   tv.append(spanString);  
}  

/**
* 設置背景色
* @param tv
*/
private void setBackgroundColorSpan(TextView  tv) {  
   SpannableString spanString = new SpannableString("背景色textview");  
   BackgroundColorSpan span = new BackgroundColorSpan(Color.YELLOW);  
   spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
   tv.append(spanString);  

/**
* 設置粗體樣式
* @param tv
*/
private void setStyleSpan(TextView tv) {  
   SpannableString spanString = new SpannableString("粗體斜體textview");  
   StyleSpan span = new StyleSpan(Typeface.BOLD_ITALIC);  
   spanString.setSpan(span, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
   tv.append(spanString);  
}  
/**
* 設置字體大小
* @param tv
*/
private void setRelativeFontSpan(TextView tv) {
SpannableString spanString = new SpannableString("字體相對大小textview");
spanString.setSpan(new RelativeSizeSpan(2.5f), 0, 6,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
tv.append(spanString);    
}
/**
* 設置文本字體
* @param tv
*/
private void setTypefaceSpan(TextView tv) {
SpannableString spanString = new SpannableString("文本字體textview");
spanString.setSpan(new TypefaceSpan("monospace"), 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.append(spanString);
}
/**
* 添加URL超鏈接
* @param tv
*/
private void addUrlSpan(TextView tv) {  
   SpannableString spanString = new SpannableString("csdntextview");  
   URLSpan span = new URLSpan("https://blog.csdn.net/nuptboyzhb");  
   spanString.setSpan(span, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
   tv.append(spanString);
   tv.setMovementMethod(LinkMovementMethod.getInstance());
}  
/**
* 在文字中顯示圖片表情等
* @param tv
*/
private void addImageSpan(TextView tv) {  
   SpannableString spanString = new SpannableString("文中有圖片表情等textview");  
   Drawable d = getResources().getDrawable(R.drawable.ic_launcher);  
   d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());  
   ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);  
   spanString.setSpan(span, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
   tv.append(spanString);  

/**
* 點擊後跳轉Activity
* @param textView
* @param packageContext
* @param cls
*/
private void clickableSpan(TextView textView,final Context packageContext,final Class<?> cls){
String text = "顯示Activity";
SpannableString spannableString = new SpannableString(text);
spannableString.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Intent intent = new Intent(packageContext,cls);
startActivity(intent);
}
// 表示點擊整個text的長度都有效觸發這個事件
}, 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
textView.setMovementMethod(LinkMovementMethod.getInstance());
}
/**
* 添加下劃線
* @param tv
*/
private void addUnderLineSpan(TextView tv) {  
   SpannableString spanString = new SpannableString("下劃線textview");  
   UnderlineSpan span = new UnderlineSpan();  
   spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
   tv.append(spanString);  

/**
* 添加刪除線樣式
* @param tv
*/
private void addStrikeSpan(TextView tv) {  
   SpannableString spanString = new SpannableString("刪除線textview");  
   StrikethroughSpan span = new StrikethroughSpan();  
   spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
   tv.append(spanString);  

}  




最後更新:2017-04-03 12:56:39

  上一篇:go 微信之父張小龍:怎樣做簡單的產品經理? 一
  下一篇:go “微信之父”張小龍:微信背後的產品觀