android textview問題總結

心鑫發表於2013-08-20
一、selctor不啟作用

設定方法 : android:background="@drawable/fen_selector"

如果只有這個的話,是不起作用的。還必須加上: android:clickable="true"

二、setSpan 文字顯示

 效果如上,一個文字框內的文字多種顯示效果

SpannableString text6 = new SpannableString("make a call");  
text6.setSpan(new URLSpan("tel:10086"), 7, 11, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
text6.setSpan(new ForegroundColorSpan(color.purple), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
tv11.setText( text6 );  
tv11.setMovementMethod(LinkMovementMethod.getInstance()); 
//setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 5, 9, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 


void android.text.SpannableString.setSpan(Object what, int start, int end, int flags)

what 

 

flag


自定義 characterstyle ClickableSpan

 預設的連結在點選時,只會跳轉到響應的View,如點選URL時,開啟瀏覽器,點選電話號碼時,開啟撥號介面。 如果我們要在點選某連線時,跳轉到某個Activity呢。 


URLSpan繼承自ClickableSpan,所以我們的出發點也是這個類,然後重寫其中的onClick 

 

Java程式碼  收藏程式碼
  1. public class IntentSpan extends ClickableSpan implements ParcelableSpan {  
  2.     private Intent mIntent;  
  3.       
  4.     public IntentSpan(Intent toActivity) {  
  5.         mIntent = toActivity;  
  6.     }  
  7.       
  8.     @Override  
  9.     public void onClick(View sourceView) {  
  10.         Context context = sourceView.getContext();  
  11.         context.startActivity( mIntent );  
  12.     }  
  13.       
  14.     @Override  
  15.     public int getSpanTypeId() {  
  16.         return 100;  
  17.     }  
  18.       
  19.     @Override  
  20.     public int describeContents() {  
  21.         return 0;  
  22.     }  
  23.       
  24.     @Override  
  25.     public void writeToParcel(Parcel dest, int flag) {  
  26.         // don't write to parcel  
  27.     }  
  28.       
  29.     public Intent getIntent() {  
  30.         return mIntent;  
  31.     }  
  32. }  
  33.    

 使用的話和URLSpan差不多 

 

Java程式碼  收藏程式碼
  1. SpannableString text6 = new SpannableString("make a call");  
  2. Intent intent = new Intent(context, SomActivity.class);  
  3. text6.setSpan(new IntentSpan(intent), 711, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  4. view6.setText( text6 );  
  5. view6.setMovementMethod(LinkMovementMethod.getInstance());  

引用自:http://mycoding.iteye.com/blog/1436660


相關文章