2017-06-06 6 views
-1

Ich habe eine Ansicht Textansicht anzeigen und Autolink aktivieren.Android öffnen neue Aktivität, wenn Link von Textansicht (Autolink) klicken

<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" /> 

Jetzt, wenn ich Link von Textview klicken, wird es Browser öffnen. Aber ich möchte Wege finden, um neue Aktivitäten zu öffnen, wenn ich auf denselben Link klicke.

+0

Onclick Zuhörer implementieren auf Textview –

+0

@JaydeepPatel Ich möchte auf http-Link nur Klick-Aktion aktivieren. – Goffity

+0

überprüfen, ob Text URL ist oder nicht: URLUtil.isValidUrl (URL) –

Antwort

0

Sie können dies hinzufügen.

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

Hoffe, das hilft.

+0

Danke. @sarthak, Aber diese Lösung öffnet neue Aktivitäten, wenn Sie auf einen Bereich von Textview klicken. Ich möchte nur HTTP-Link in der Lage sein. – Goffity

0

, die perfekt funktionieren:

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); 

       } 
      }); 

dies o Browser mit URL zu öffnen:

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

Dies wird allen Text mit unterstreichen. – Goffity

+0

natürlich @Goffity – Mohamed

+0

und öffnen Sie neue Aktivität – Mohamed

0

Sie Linkify in Textview verwenden können,

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()); 

Und Autoverladerampe Klasse,

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

Es ist immer noch Web-Browser geöffnet. – Goffity

+0

Ich bearbeitete meine Antwort, ich fügte Probe TextView, ich eincheckte meine Geräte funktioniert es gut. Wenn Sie auf "www.google.com" klicken, wird das Protokoll ausgedruckt, wenn Sie darauf klicken. Das Protokoll wird nicht gedruckt. –

+0

Ich folge dir Antwort. Es kann url erkennen, ich überprüfe das Protokoll von spanStart und spanEnd, aber Ereignisse onClick funktioniert nicht. Ich teste auf Android 6.0. – Goffity

0

Verwenden Sie den Code unten zu identifizieren, welcher Teil des Textes

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 
    } 
} 

}) angeklickt wird;

und schreiben Code zu tun, was Sie mit jedem Fall wollen

Verwandte Themen