2013-07-23 99 views
2

我需要能夠爲應用程序中的TextView創建鏈接,但鏈接指向的實際URL需要動態添加。在TextViews中動態創建鏈接

通過這裏SO的研究,我發現下面的代碼:

 textView.setText(Html.fromHtml(
        "<b>text3:</b> Text with a " + 
        "<a href=\"http://www.google.com\">link</a> " + 
        "created in the Java source code using HTML.")); 
     textView.setMovementMethod(LinkMovementMethod.getInstance()); 

據稱這將設置在TextView的,因爲它會在HTML的鏈接。這正是我需要做的,但我需要的URL是動態的,基於將傳遞到setText()的字符串變量。我如何輕鬆地去做這件事?

澄清:我想顯示單詞「網站」是一個鏈接,我需要鏈接指向的URL根據將用戶引導到該視圖的特定路徑進行動態更新。

謝謝!

編輯:這裏是更新後的代碼:

String linkedText = "<b>text3:</b> Text with a " + 
      String.format("<a href=\"%s\">link</a> ", WEB) + 
      "created in the Java source code using HTML."; 
web.setText(Html.fromHtml(linkedText)); 

web.setMovementMethod(LinkMovementMethod.getInstance()); 

這裏是TextView中的XML:

 <TextView 
      android:id="@+id/vWeb" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/vPhone" 
      android:layout_marginTop="5dp" 
      android:layout_toRightOf="@+id/webIcon" 
      android:paddingLeft="1dp" 
      android:autoLink="web" 
      android:textIsSelectable="true" /> 

回答

7

如果我理解正確的問題,你可以嘗試使用的String.format():

String dynamicUrl = "http://www.google.com"; // or whatever you want, it's dynamic 

String linkedText = "<b>text3:</b> Text with a " + 
     String.format("<a href=\"%s\">link</a> ", dynamicUrl) + 
     "created in the Java source code using HTML."; 

textView.setText(Html.fromHtml(linkedText)); 
textView.setMovementMethod(LinkMovementMethod.getInstance()); 

編輯:您還需要刪除0從XML的爲此工作。

+0

這只是添加單詞「鏈接」的TextView,但不會使它可點擊。 – user2163853

+0

我沒有意識到這是你問題的一部分。在將它複製到我自己的項目之後,我運行了上面的代碼,它似乎工作正常。 TextView上方是否存在可能攔截點擊的非可見視圖? – Brian

+0

不,我不這麼認爲。實施此鏈接時甚至不會顯示鏈接。 – user2163853

0

使用屬性

機器人:自動鏈接= 「所有」

在TextView的XML文件下

其辦理的所有網頁,電子郵件,電話,地圖,這樣你們需要擔心它