首先在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連結點擊的控制範例。
沒有留言:
張貼留言