如何使用autolink
网页设置控制textView autolink web OnClick
,换句话说,拦截String text="Lucy is very nice.Here is her link.https://www.google.com";textview.setText(text);
事件?
例如,{{1}} 点击" https://www.google.com"时,我可以抓住它并跳转到我的应用活动而不是网络浏览器。 Textview有一个属性“autolink”。我将autolink设置为web.android:autoLink=" ;web"因此,android系统可以自动检测url。当点击url时,它会跳转到浏览器。现在点击时,我不想跳到浏览器,我只想跳转到我的app活动并留在app中。 / p>
答案 0 :(得分:2)
感谢您的所有答案。现在我找到了问题的答案。有两个步骤。
1.您需要设置Textview属性。机器人:自动链接= “网络”
<TextView
android:id="@+id/text_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:autoLink="web"
android:text="Lucy is very nice.Here is her link.https://www.google.com" />
2.覆盖URL onclick。有一个例子。
公共类MainActivity扩展了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) {
Toast.makeText(MainActivity.this, url, Toast.LENGTH_LONG).show();
}
}
}
3.上述代码完全解决了我的问题。所以,当我在Textview中点击www.google.com时,网址会显示并跳转到特定的活动。
答案 1 :(得分:0)
我没有得到您想说的内容,但这会打开一个网址,或者您可以将其复制到cliopboard,如复制和粘贴。
button.setOnClickListener(new View.OnClickListener(){ public void onClick(查看v){
Intent browserIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(&#34; http://www.google.com&#34;)); startActivity(browserIntent);
} }
答案 2 :(得分:0)
由于你的问题不明确,我给你答案可能有所帮助。 创建另一个要显示链接的活动:
WebView wv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_search);
Bundle bundle = getIntent().getExtras();
String url = bundle.getString("message");
wv=(WebView)findViewById(R.id.left_webview);
getActionBar().setHomeButtonEnabled(true);
//wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setSupportMultipleWindows(true);
wv.loadUrl(url);
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
System.out.println("URL :: " + url);
view.loadUrl(url);
return true;
}
});
}
textView活动中的:
Intent i = new Intent(TextViewActivity.this,NextActivity.class);
i.putExtra("message","https://google.com");
startActivity(i);
答案 3 :(得分:0)
如果我理解你的问题,那么这就是你要找的东西。为了控制create_table "ingredients", force: :cascade do |t|
t.string "name", limit: 255
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
内文字的点击事件,您必须使用HTML来创建链接并使用TextView
。
SpannableString
所以,根据你的评论,你不能使用HTML,所以这里是另一个例子,从已经设置 // textView.setText("Lucy is very nice. Here is her link. https://www.google.com");
final String source = "Lucy is very nice. Here is her link. <a href=\"scheme://some.link\">Click</a>";
final Spanned html = Html.fromHtml(source);
final SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(html);
final URLSpan[] spans = spannableStringBuilder.getSpans(0, html.length(), URLSpan.class);
final URLSpan span = spans[0];
final int start = spannableStringBuilder.getSpanStart(span);
final int end = spannableStringBuilder.getSpanEnd(span);
final int flags = spannableStringBuilder.getSpanFlags(span);
final ClickableSpan clickableSpan = new ClickableSpan() {
public void onClick(View view) {
Log.d(TAG, "Clicked: " + span.getURL());
}
};
spannableStringBuilder.setSpan(clickableSpan, start, end, flags);
spannableStringBuilder.removeSpan(span);
textView.setText(spannableStringBuilder);
textView.setLinksClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
的TextView中获取文本:
autoLink