2012-04-20 20 views
15

Jak nadać autolink dla części tekstu? Na przykład: Mój tekst w TextView to "Proszę kliknąć tutaj, aby otworzyć tę stronę". Chcę pokazać link tylko do tekstu "tutaj". I powinienem otworzyć tę stronę na tekście "tutaj", ale nie w dowolnym miejscu w TextView. Proszę pomóż mi.Autolink wewnątrz TextView w Androidzie

Odpowiedz

28

wpisz ciąg w string.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="txtCredits">Support: <a href="http://www.stackoverflow.com">click here</a></string> 
</resources> 

I można go używać w TextView tak:

<TextView 
     android:layout_width="fill_parent" 
     android:id="@+id/text" 
     android:layout_height="wrap_content" 
     android:autoLink="web" 
     android:gravity="center" 
     android:linksClickable="true" 
     android:text="@string/txtCredits" /> 

EDIT

Z jakiegoś powodu powyższy kod nie działa poprawnie. Tak, dodaj poniżej kod także,

TextView t2 = (TextView) findViewById(R.id.text); 
t2.setMovementMethod(LinkMovementMethod.getInstance()); 
+0

To powinna być zaakceptowana odpowiedź. – Madbreaks

+5

Z moich testów nie powoduje to kliknięcia hiperłącza. Poprawia go poprawnie (robi niebieski z podkreśleniem), ale nie można go kliknąć. Wydaje się, że jedynym sposobem jest tutaj: http://stackoverflow.com/a/2746708/708906 –

+0

Próbowałem również tej odpowiedzi. To tak naprawdę nie działa. –

7

Teksty mogą wyświetlać HTML, który rozwiązuje problem. Owinąć co chcesz klikać w hiperłącze:

String html = "My link is <a href=\"http://google.com\">here</a>"; 
myTextView.setText(Html.fromHtml(html)); 
+0

Czy w tym przypadku muszę ustawić onClickListener dla TextView? –

+0

Nie, ty nie. –

+3

To jest o najgorszym możliwym podejściu, jakie widziałem, przepraszam. Jak ten ciąg wygląda jak zasób w XML? 'Linkify',' ClickableSpan', 'android: autoLink'. Wybierz swój ulubiony, ale nie używaj HTML w ten sposób. – Madbreaks

1

składni używać HTML w strings.xml:

<string name="test">Click &lt;a href="http://vtuhtan.info"&gt;here&lt;/a&gt;</string> 

właściwości Zestaw TextView mieć linki klikalne i auto odnośnik.

TextView tv = findViewById(R.id.textView); 
tv.setText(Html.fromHtml(getResources().getString(R.string.test))); 
0

użycie prosty URL w strings.xml:

<string name="autolink_val">Plese Click Here : http://www.google.com</string> 

I w kodzie Java napisać to:

<TextView android:id="@+id/linkVal" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:autoLink="web" 
      android:text="@string/autolink_val1"/>` 
+2

'android: autoLink =" web "' nie zezwala na łącze, które mówi ["tutaj"] (http://www.example.com/); zezwala tylko na to, aby sam adres URL działał jako łącze, tak jak w: [http://www.example.com/](http://www.example.com/). – dokkaebi

1

Można przetestować go z następującym kodem:

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="http://www.yahoo.com" 
    android:autoLink="web" 
    /> 
Powiązane problemy