首先在xml中要先加入autoLink的屬性
<TextView
android:id="@+id/test_textView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:autoLink="all"
/>
其中autoLink="all" 會把可能為超連結的字串自動轉成超連結(網址、信箱、電話之類)那在TextView中顯示的連結要如何控制點擊事件呢?
在你的code中加入以下代碼(視情況做調整)
mTextLink = (TextView) dialog.findViewById(R.id.test_textView);
/*假設mTextLink中的文字內容為
*"聯絡方式:stephen.tsai@gmail.com"
*/
CharSequence text = mAutoLink.getText();
if (text instanceof Spannable) {
int end = text.length();
Spannable sp = (Spannable) mAutoLink.getText();
URLSpan[] spans = sp.getSpans(0, end, URLSpan.class);
SpannableStringBuilder style = new SpannableStringBuilder(text);
style.clearSpans();// should clear old spans
for (URLSpan span : spans) {
TextSpan mSpan = new TextSpan(span.getURL());
style.setSpan(mSpan, sp.getSpanStart(span), sp.getSpanEnd(span), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
}
mAutoLink.setText(style);
}
mAutoLink.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Toast.makeText(this,"整個TextView的點擊事件",Toast.LENGTH_SHORT).show();
}});
private class TextSpan extends ClickableSpan {
private String mSpan;
TextSpan(String span) {
mSpan = span;
}
@Override
public void onClick(View widget) {
/*Link被點擊
*可以加入自己想做的事件
*/
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(mSpan));
startActivity(intent);
}
}
以上就是簡單的TextView中Link連結點擊的控制範例。
沒有留言:
張貼留言