我怎樣才能打開TextView
的鏈接到WebView
當我點擊鏈接TextView
。我們如何才能打開到Webview的TextView的鏈接
回答
Spanned spanned = Html.fromHtml("<a href=\"http://google.com\">google.com</a>");
textView.setText(spanned);
編輯:這不是處理鏈接的點擊一個理想的方式,但我不知道任何其他方式。
您的主要活動包含一個帶有鏈接的TextView
。鏈接網址具有自定義方案。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView link = (TextView)findViewById(R.id.link);
link.setText(
Html.fromHtml("<a href='myscheme://www.google.com'>link</a>"));
link.setMovementMethod(LinkMovementMethod.getInstance());
}
}
當這個鏈接被點擊的Android使用鏈接URL開始與ACTION_VIEW
的Activity
。假設您有一個WebViewActivity
,它使用此自定義方案處理URI。它獲取通過的URI並用http
替換它的方案。
public class WebViewActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null) {
String url =
getIntent().getDataString().replace("myscheme://", "http://");
// do something with this URL.
}
}
}
處理自定義的URI方案WebViewActivity
必須在AndroidManifest.xml
文件的意圖過濾器:
<activity android:name=".WebViewActivity" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="myscheme" />
</intent-filter>
</activity>
謝謝精靈,但它會在默認瀏覽器中打開不在WebView中。 :( –
哦,我誤解了你的問題,在這種情況下,你可以創建一個自己的模式的URL,並在AndroidManifest.xml中註冊一個意圖過濾器。 – Michael
再次感謝你,但你能解釋一下嗎 –
hotel_website=(TextView)viewflipper.findViewById(R.id.tv_website);
hotel_website.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = "http://" +hotel_website.getText().toString();
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});
和XML
<TextView
android:clickable="true"
</TextView>
以下爲我工作。我剛剛使用了LinkMovementMethod的onTouchEvent代碼。你可以像上面提到的Michael那樣在textView中設置鏈接,或者你可以在strings.xml中設置它。我用這個庫打開鏈接https://github.com/DreaminginCodeZH/CustomTabsHelper。
textView.setMovementMethod(new MovementMethod() {
@Override
public void initialize(TextView widget, Spannable text) {
}
@Override
public boolean onKeyDown(TextView widget, Spannable text, int keyCode, KeyEvent event) {
return false;
}
@Override
public boolean onKeyUp(TextView widget, Spannable text, int keyCode, KeyEvent event) {
return false;
}
@Override
public boolean onKeyOther(TextView view, Spannable text, KeyEvent event) {
return false;
}
@Override
public void onTakeFocus(TextView widget, Spannable text, int direction) {
}
@Override
public boolean onTrackballEvent(TextView widget, Spannable text, MotionEvent event) {
return false;
}
/**
* Borrowed code for detecting and selecting link from
* {@link LinkMovementMethod#onTouchEvent(TextView, Spannable, MotionEvent)}
*/
@Override
public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_UP ||
action == MotionEvent.ACTION_DOWN) {
int x = (int) event.getX();
int y = (int) event.getY();
x -= widget.getTotalPaddingLeft();
y -= widget.getTotalPaddingTop();
x += widget.getScrollX();
y += widget.getScrollY();
Layout layout = widget.getLayout();
int line = layout.getLineForVertical(y);
int off = layout.getOffsetForHorizontal(line, x);
ClickableSpan[] link = buffer.getSpans(off, off, ClickableSpan.class);
if (link.length != 0) {
if (action == MotionEvent.ACTION_UP) {
// do whatever else you want here on link being clicked
Selection.removeSelection(buffer);
} else if (action == MotionEvent.ACTION_DOWN) {
Selection.setSelection(buffer,
buffer.getSpanStart(link[0]),
buffer.getSpanEnd(link[0]));
}
return true;
} else {
Selection.removeSelection(buffer);
}
}
return false;
}
@Override
public boolean onGenericMotionEvent(TextView widget, Spannable text, MotionEvent event) {
return false;
}
@Override
public boolean canSelectArbitrarily() {
return false;
}
});
- 1. 如何從menu.xml打開鏈接到WebView
- 2. 如何在WebView中從TextView鏈接中打開URL?
- 3. 如何在android中的一個webview中打開我的鏈接?
- 4. Swift如何在Webview中打開鏈接?
- 5. 我們如何打開從www開始的鏈接
- 6. WebView打開'_blank'鏈接
- 7. Android WebView(鏈接打開)
- 8. 在WebView上打開鏈接
- 9. 如何打開WebView鏈接到新的活動?
- 10. 如何在webview中打開鏈接,如果它在webview中(swift)
- 11. android webview中的鏈接打開兩次
- 12. WebView上的YouTube鏈接未打開Youtube
- 13. 如何打開webView中存在的任何網站的鏈接
- 14. 如何避免在同一個webview中打開webview鏈接
- 15. 我們如何才能給zendfrom超鏈接?使用
- 16. 鏈接在我的WebView中打開不同的頁面
- 17. 的WebView打開鏈接,然後在瀏覽器中打開
- 18. 如何從其他webview xcode中的UIwebview打開鏈接?
- 19. 如何打開WebView中的鏈接而不是Safari?
- 20. 如何打開新選項卡android webview中的鏈接?
- 21. 如何在Android中的Android WebView中打開多個PDF鏈接?
- 22. 在textView鏈接中打開網站
- 23. 我們如何在隱私瀏覽模式下打開鏈接
- 24. 我在webview中的鏈接無法打開?
- 25. 在Javascript中打開webView鏈接?
- 26. MacOS/OSX Webview不打開外部鏈接
- 27. 鏈接無法在webview中打開?
- 28. 在Webview活動中打開RSS鏈接
- 29. 無法在webview中打開鏈接
- 30. RSS鏈接將在WebView(iOS)中打開
相關:http://stackoverflow.com/questions/6636283/open-a-link-in-a-webview-instead-of-default-browser –