2017-06-06 89 views
-1

我有一個視圖顯示textview並啓用自動鏈接。Android從textview(自動鏈接)點擊鏈接時打開新活動

<TextView 
    android:id="@+id/txt_contents" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_margin="30dp" 
    android:textColor="@color/txt_code_itemlist" 
    android:autoLink="web" 
    android:textSize="22sp" /> 

現在,當我點擊從textview鏈接它將打開瀏覽器。但是當我點擊相同的鏈接時,我想找到打開新活動的方式。

+0

落實TextView的 –

+0

@JaydeepPatel我只希望在HTTP鏈接啓用點擊操作的onclick監聽器。 – Goffity

+0

檢查文本是否爲url:URLUtil.isValidUrl(url) –

回答

0

您可以添加它。

text_view.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(CurrentActivity.this,YourNewActivity.class); 
      startActivity(intent); 
     } 
    }); 

希望這會有所幫助。

+0

謝謝。 @sarthak,但是這個解決方案會在點擊Textview的任何區域時打開新的活動。我想只能通過http鏈接進行活動。 – Goffity

0

的工作完美:

tvoublie.setPaintFlags(tvoublie.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); 
      Linkify.addLinks(tvoublie, Linkify.ALL); 
      tvoublie.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Log.i("LoginActivity", "Sign Up Activity activated."); 
        // this is where you should start the new Activity 
        Intent intent = new Intent(CurrentActivity.this,YourNewActivity.class); 
        startActivity(intent); 

       } 
      }); 

本打開Ø瀏覽器,網址:

register.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(); 
       intent.setAction(Intent.ACTION_VIEW); 
       intent.addCategory(Intent.CATEGORY_BROWSABLE); 
       intent.setData(Uri.parse("https://www.google.com")); 
       startActivity(intent); 
      } 
     }); 
+0

這將使所有帶下劃線的文本。 – Goffity

+0

當然@Goffity – Mohamed

+0

並打開新的活動 – Mohamed

0

可以在TextView中使用Linkify,

TextView sample = (TextView) findViewById(R.id.txt_contents); 

    String webUrlOrText = "www.google.com a search Engine"; 
    Spannable spannableString = new SpannableString(Html.fromHtml(webUrlOrText)); 



    Linkify.addLinks(spannableString, Linkify.WEB_URLS); // It will make only Weblink clickable 

    URLSpan[] urlSpans = spannableString.getSpans(0, spannableString.length(), URLSpan.class); 
    for (URLSpan urlSpan : urlSpans) { 
     LinkSpan linkSpan = new LinkSpan(urlSpan.getURL()); 
     int spanStart = spannableString.getSpanStart(urlSpan); 
     int spanEnd = spannableString.getSpanEnd(urlSpan); 
     spannableString.setSpan(linkSpan, spanStart, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
     spannableString.removeSpan(urlSpan); 
    } 

    sample.setText(spannableString); 
    sample.setMovementMethod(LinkMovementMethod.getInstance()); 

而且LinkSpan類,

private class LinkSpan extends URLSpan { 
    private LinkSpan(String url) { 
     super(url); 
    } 

    @Override 
    public void onClick(View view) { 
     String url = getURL(); 

     if (url != null) { 
      // Open the Activity here 
      Log.d(TAG, "Url clicked"); 
     } 
    } 
} 
+0

它仍然是開放的網絡瀏覽器。 – Goffity

+0

我編輯了我的答案,我添加了示例TextView,我檢查了我的設備工作正常。如果我們點擊「www.google.com」其他地方,它會打印該日誌,如果點擊它將不打印日誌。 –

+0

我跟着你回答。它可以檢測到url,我檢查spanStart和spanEnd的日誌,但事件onClick不起作用。 我在android 6.0上測試。 – Goffity

0

使用以下代碼來識別文本的一部分被點擊

tv.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
    ClassroomLog.log(TAG, "Textview Click listener "); 
    if (tv.getSelectionStart() == -1 && tv.getSelectionEnd() == -1) { 
     //This condition will satisfy only when it is not an autolinked text 
     //Fired only when you touch the part of the text that is not hyperlinked 
    } 
} 

});

和編寫代碼做任何你想要的任何一種情況下