如何使用自动链接web设置控制textView onclicklistener,换句话说,拦截autolink web OnClick事件?

时间:2016-07-25 03:43:57

标签: android

如何使用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>

4 个答案:

答案 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