標籤:android style ext c int get
功能:
1. 在TextView中顯示圖片,類似於含有表情圖片的聊天
2.設定TextView的部分text可以點擊
說明:
SpannableString 實現了CharSequence介面,可以將text的指定部分標記為CharacterStyle對象,如ImageSpan,ClickableSpan等,TextView在顯示時會將標記為CharacterStyle的部分text做特定處理
代碼1: 在TextView中顯示圖片
// TextView
mTextView = (TextView) findViewById(R.id.textView1);
// 建立SpannableString對象
SpannableString stringSpan = new SpannableString("0123456789");
// 建立CharacterStyle對象
ImageSpan imageSpan = new ImageSpan(this, R.drawable.p1);
// 將SpannableString的0~3共3個字元標記為ImageSpan對象(CharacterStyle)
stringSpan.setSpan(imageSpan, 0, 3, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
// 將SpannableString的4~5共1個字元標記為imageSpan對象
// 注意:一個ImaggeSpan對象只能標記一次
stringSpan.setSpan(new ImageSpan(this,R.drawable.p2), 4, 5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
// 顯示text,此時,輸出結果為: 圖片(p1)3圖片(p2)56789
mTextView.setText(getSpannableString());
代碼2: 在TextView中顯示部分可點擊的文字
// TextView
mTextView = (TextView) findViewById(R.id.textView1);
// 建立SpannableString對象
SpannableString stringSpan = new SpannableString("0123456789");
// 建立ClickableSpan對象,用於標記可點擊的text
ClickableSpan clickSpan = new ClickableSpan() {
// 當被標記時text被點擊時的回調方法
@Override
public void onClick(View arg0) {
Log.i("DTV", "click");
}
// 用於定義被標記文字的樣式
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
// 設定無底線
ds.setUnderlineText(false);
}
};
// 標記文字
stringSpan.setSpan(clickSpan, 6, 9, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 顯示text,此時,輸出結果為: 圖片(p1)3圖片(p2)56789
mTextView.setText(stringSpan);
mTextView.setMovementMethod(LinkMovementMethod.getInstance());// 必須要有,否則不會調用onClick方法