2012-02-09 10 views
21

Zwykle uruchamiam jakiś rodzaj AlertDialog, aby odpalić, gdy użytkownik po raz pierwszy używa jednej z moich aplikacji i wyjaśniam, jak korzystać z aplikacji i podać ogólne wprowadzenie do tego, co właśnie pobrali. Zwykle ładuję również moje łańcuchy z pliku strings.xml.Android - czy możliwe jest dodanie klikalnego linku do źródła ciągów znaków

Chcę, aby jedno ze słów w moim zasobie łańcucha kliknęło jak hiperłącze na stronie internetowej. Zasadniczo miałbyś AlertDialog i w zasobach ciągów pojawi się podświetlone słowo lub ewentualnie tylko adres internetowy, który mógłby nacisnąć. Przypuszczam, że mógłbym dodać przycisk, który zaprowadziłby ich na stronę, ale chciałem tylko wiedzieć, czy w słowie kluczowym można uzyskać klikalne hiperłącze.

Odpowiedz

43

Wystarczy użyć formatu HTML linku w swoim zasobie:

<string name="my_link"><a href="http://somesite.com/">Click me!</a></string>

Następnie można użyć setMovementMethod(LinkMovementMethod.getInstance()) na TextView aby łącza klikalne.

Istnieje również atrybut TextView o wartości android:autoLink, który również powinien działać.

+1

Awesome :) Ili spróbuj ustawić to i oddzwonić, gdy dostanę go do pracy :) –

+4

android: autoLink = "web" działa idealnie dla mnie. – Rajkiran

+1

Zauważyłem, że wszystko w ciągu znaków * po * link nie wyświetla się (więc ' To pokazuje i so does this, ale to doesn \ 't'). Jak Ty to robisz? –

5

Android nie tworzy ciągów, które zawierają poprawny link klikalny automatycznie. Możesz dodać niestandardowy widok do okna dialogowego i użyć WebView, aby wyświetlić komunikat ostrzegawczy. W takim przypadku możesz przechowywać html w swoich zasobach i będą one klikalne.

View alertDialogView = LayoutInflater.inflate(R.layout.alert_dialog_layout, null); 

WebView myWebView = (WebView) alertDialogView.findViewById(R.id.dialogWebView); 
myWebView.loadData("<a href=\"http://google.com\">Google!</a>", "text/html", "utf-8"); 
AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this); 
builder.setView(alertDialogView); 

alert_dialog_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:orientation="vertical"> 
<WebView android:id="@+id/dialogWebView" android:layout_height="wrap_content" 
    android:layout_width="wrap_content" /> 
+0

Hej dzięki za info :) Nie myślałem nawet o korzystaniu z webview, który jest całkiem fajny. –

+2

Używanie WebView do tak trywialnych rzeczy jest naprawdę złym pomysłem. –

3

Znalazłem coś interesującego. Daj mi znać, jeśli któryś z was to zauważył.

Poniżej hiperłącze nie działa, jeśli używasz

android:autoLink="web" 

ale współpracuje z

TextView link = (TextView) findViewById(R.id.link); 
link.setMovementMethod(LinkMovementMethod.getInstance()); 

<string name="my_link"> 
    <a href="http://stackoverflow.com/questions/9204303/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource"> 
     Click me! 
    </a> 
</string> 

ale jeśli kliknąć na poniższy link działa z obu

android:autoLink="web" (or) 
TextView link = (TextView) findViewById(R.id.link); 
link.setMovementMethod(LinkMovementMethod.getInstance()); 

<string name="my_link"> 
    <a href="http://stackoverflow.com/questions/9204303/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource"> 
     http://stackoverflow.com/questions/9204303/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource 
</string> 
    </a> 
Powiązane problemy