2013-09-02 13 views
5

Mam łącze w moim TextView:Dlaczego link nie działa w widoku tekstowym?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    ... 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:autoLink="all" 
     android:linksClickable="true" 
     android:text="@string/app_description" /> 
</RelativeLayout> 

link jest częścią zasobów:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    ... 
    <string name="app_description">Some text with the <a href="http://www.example.com">link</a>.</string> 
</resources> 

jakiś link nie działa. Jaki mógł być powód? Jest wyświetlany jak link. Ale kliknięcie nie otwiera przeglądarki.

kod Klasa:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
+0

Czy próbowałeś z android: klikalne = "true"? –

+0

Zobacz, czy [Jak utworzyć łącze w klikalnym kodzie tekstowym] (http://stackoverflow.com/questions/2734270/how-do-i-make-links-in-a-textview-clickable) lub [Linki w TextView Odpowiedzi na pytania (http://stackoverflow.com/questions/4790746/links-in-textview). –

+0

Spróbuj tego: android: autoLink = "web" –

Odpowiedz

6

można użyć łącza http ten sposób:

mLink = (TextView) findViewById(R.id.link); 
     if (mLink != null) { 
     mLink.setMovementMethod(LinkMovementMethod.getInstance()); 
    } 

W XML:

android:autoLink="all" 
+0

Dzięki. Twoja odpowiedź wraz z http://stackoverflow.com/a/6892799/604388 pomogła. –

+0

Nie działa z niestandardową czcionką. Jakaś wskazówka? – ADM

1

TextView yourTextView = (TextView) findViewById (R.id .yourTextViewId);

yourTextView.setMovementMethod(LinkMovementMethod.getInstance()); 
    Spannable spans = (Spannable) yourTextView.getText(); 

    ClickableSpan clickSpan = new ClickableSpan() { 

     @Override 
     public void onClick(View v) { 
      switch (v.getId()) { 

      case R.id.yourTextViewId : 
       Intent localIntent = new Intent(); 
       localIntent.setAction("android.intent.action.VIEW"); 
       localIntent.setData(Uri.parse("YOUR LINK")); 
       startActivity(localIntent); 
       break; 
      } 

     } 
    }; 
    spans.setSpan(clickSpan, 0, spans.length(), 
      Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
0

enter image description here

następujący kod działa dla mnie.

String html2 = "<br><br>Fire - <b><a href=http://www.google.com>google</a> </b></br></br>"; 
     text.append(Html.fromHtml(html2)); 
     text.setMovementMethod(LinkMovementMethod.getInstance()); 
0

Usuń android: autoLink z definicji layoutu. Jest to nadmierne w przypadku twojej sprawy. Wrap ciąg zasobów z <![CDATA[ ]]> tak:

<?xml version="1.0" encoding="utf-8"?> <resources> ... <string name="app_description"><![CDATA[Some text with the <a href="http://www.example.com">link</a>.]]></string> </resources>

+1

Wygląda na to, że twoja odpowiedź została odcięta - czy możesz edytować odpowiedź, aby była kompletna? –