1.现在有一个需求,textview中的字符串,例如:”你好,欢迎来到android世界!http://www.google.com 谷歌是我们的一个好工具“ 点击字符串中的网址不让其跳转到浏览器中,而是能够解析网址中的id,从而跳转到app中特定的activity中。我已经设置了textview的属性autolink="true"2.目前的问题是,点击网址总是跳转到浏览器!所以我该如何捕捉到点击网址的事件或者如何跳转到指定的Activity中?
认证0级讲师
感謝各位熱情網友的回答,我已經找到相關的答案了。具體如下:
注意android:autoLink="web"
<TextView android:id="@+id/text_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:autoLink="web" android:text="@string/hello" />
2.重寫url的點擊事件
public class MainActivity extends Activity {
TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); CharSequence text = tv.getText(); if (text instanceof Spannable) { int end = text.length(); Spannable sp = (Spannable) text; URLSpan urls[] = sp.getSpans(0, end, URLSpan.class); SpannableStringBuilder style = new SpannableStringBuilder(text); style.clearSpans(); for (URLSpan urlSpan : urls) { MyURLSpan myURLSpan = new MyURLSpan(urlSpan.getURL()); style.setSpan(myURLSpan, sp.getSpanStart(urlSpan), sp.getSpanEnd(urlSpan), Spannable.SPAN_EXCLUSIVE_INCLUSIVE); } tv.setText(style); } } private class MyURLSpan extends ClickableSpan { private String url; public MyURLSpan(String url) { this.url = url; } @Override public void onClick(View arg0) { startActivity(new Intent(WXEntryActivity.this,RegisterActivity.class)); } } }
3.上面兩步完美的解決了網站連結標高亮顯示並且有下劃線,點擊時,可以在跳到確定的Activity中
最後再次感謝各位的回答,更加感謝網友@小谷xg 評論中給出這方面的博客參考,學習到了很多很多。
需要這麼繞彎嗎?直接textView設定clickable="true",然後設定textview.setOnclickListener點擊事件,跳轉就可以,textview.getText取得網址
繼承ClickableSpan重写onClick方法
ClickableSpan
onClick
我之前這麼寫過,你看有沒有幫助
public class MainActivity extends ActionBarActivity { private TextView textView; static Context ctx = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.tv); ctx = this; textView = (TextView) findViewById(R.id.tv); String htmlLinkText = "<a href=\"" + "http:" + "/" + "/" + "www.baidu.com\"><u>我的CSDN博客 </u></a>"; textView.setText(Html.fromHtml(htmlLinkText)); textView.setMovementMethod(LinkMovementMethod.getInstance()); CharSequence text = textView.getText(); if (text instanceof Spannable) { int end = text.length(); Spannable sp = (Spannable) textView.getText(); URLSpan[] urls = sp.getSpans(0, end, URLSpan.class); SpannableStringBuilder style = new SpannableStringBuilder(text); style.clearSpans(); for (URLSpan url : urls) { MyURLSpan myURLSpan = new MyURLSpan(url.getURL()); style.setSpan(myURLSpan, sp.getSpanStart(url), sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } textView.setText(style); } } private static class MyURLSpan extends ClickableSpan { private String mUrl; MyURLSpan(String url) { mUrl = url; } @Override public void onClick(View widget) { Toast.makeText(ctx, mUrl, Toast.LENGTH_SHORT).show(); } } }
不要用autolink屬性, 直接設定textview的點擊事件, 含符合條件的String 就除非對應的事件:例如呼叫某個activity
需求描述:1、樓主需要對網站連結標有下劃線2、樓主希望點擊時,跳到確定的Activity中
雷雷
群主找到解決方法了嗎?我也遇到這樣的問題了
感謝各位熱情網友的回答,我已經找到相關的答案了。具體如下:
注意android:autoLink="web"
2.重寫url的點擊事件
public class MainActivity extends Activity {
3.上面兩步完美的解決了網站連結標高亮顯示並且有下劃線,點擊時,可以在跳到確定的Activity中
最後再次感謝各位的回答,更加感謝網友@小谷xg 評論中給出這方面的博客參考,學習到了很多很多。
需要這麼繞彎嗎?直接textView設定clickable="true",然後設定textview.setOnclickListener點擊事件,跳轉就可以,textview.getText取得網址
繼承
ClickableSpan
重写onClick
方法我之前這麼寫過,你看有沒有幫助
不要用autolink屬性, 直接設定textview的點擊事件, 含符合條件的String 就除非對應的事件:例如呼叫某個activity
需求描述:
1、樓主需要對網站連結標有下劃線
2、樓主希望點擊時,跳到確定的Activity中
雷雷
群主找到解決方法了嗎?我也遇到這樣的問題了