2010-09-29 37 views
2

我有Textview與位置:如何創建將充當鏈接的TextView

例如, 「加州山景」

我想實現的是創建這個文本像一個鏈接 - 顏色,下劃線,可聚焦性等

此鏈接不需要任何地方直接 - 周邊觀點有附加了觸發谷歌地圖意圖的onClick監聽器。

回答

13

像這樣的東西應該工作。

TextView location = (TextView) findViewById(R.id.location); 
    location.setMovementMethod(LinkMovementMethod.getInstance()); 
    Spannable spans = (Spannable) location.getText(); 
    ClickableSpan clickSpan = new ClickableSpan() { 

    @Override 
    public void onClick(View widget) 
    { 
     //put whatever you like here, below is an example 
     AlertDialog.Builder builder = new Builder(MainActivity.this); 
     builder.setTitle("Location clicked"); 
     AlertDialog dialog = builder.create();    
     dialog.show(); 
    } 
    }; 
    spans.setSpan(clickSpan, 0, spans.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
+0

你的答案是工作的罰款。但它顯示全文作爲鏈接。如何使鏈接部分應該是可點擊的而不是全文。 – 2016-08-07 10:47:36

+0

@iDroidExplorer在最後一行,將0,spans.length()更改爲您希望可點擊的字符串的範圍。 – ageektrapped 2016-08-14 19:27:57

+0

不錯。非常感謝。 – 2016-08-17 05:32:30

3

在ApiDemos中有一個可以解決您的問題的例子。退房com.example.android.apis.text.Link班,可能有幫助。以下是部分代碼:

TextView t3 = (TextView) findViewById(R.id.text3); 
t3.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.")); 
t3.setMovementMethod(LinkMovementMethod.getInstance()); 
0

tv.setMovementMethod(LinkMovementMethod.getInstance());

,如果你沒有得到點擊回調

0

你可以使用SpannablemTextView.scollTo()創建內部鏈接