2012-11-18 29 views
2

我試圖完成的事情是在大多數Twitter應用程序中標準化的東西,在textview中,可能會在文本字符串中的某個單詞之前提供「@」提及或「#」號標籤,並且它們實際上可以添加點擊聆聽者發起了另一項活動,有人知道這是如何實現的嗎?下面我附上一個例子照片顯示我想要實現的,任何幫助將很長的路要走感謝如何在Android/Java Textview中將點擊偵聽器添加到字符串中?

enter image description here

回答

7

看看在Linkify類。它允許您在給定的正則表達式中爲TextView添加鏈接。

以下已從this文章中提取:

TextView mText = (TextView) findViewById(R.id.mytext); 
Pattern userMatcher = Pattern.compile("\[email protected][^:\s]+"); 
String userViewURL = "user://"; 
Linkify.addLinks(mText, userMatcher, userViewURL); 

模式被用於從如實施例給出reguler表達高於該趕上像@username任何文本在給定的文本創建新的模式,則必須定義你的用戶://方案,這也必須在活動中定義,以捕捉點擊和最後一個Linkify.addLinks使所有這些工作在一起。讓我們看看Android.manifest文件的意圖過濾器。

<activity android:name=」.DirectMessageActivity」 > 
    <intent-filter> 
     <category android:name=」android.intent.category.DEFAULT」/> 
     <action android:name=」android.intent.action.VIEW」 /> 
     <data android:scheme=」user」 /> 
    </intent-filter> 
</activity> 

當你點擊這個@username是將捕獲的點擊和處理字符串點擊活動。是的,我們沒有提及用戶單擊@username時發送給DirectMessageActivity的內容,因爲您可能猜到「username」字符串將傳遞給DirectMessageActivity。你可以像這樣得到這個字符串。

Uri data = getIntent.getData(); 
if(data != null){ 
    String uri = data.toString(); 
    username = uri.substring(uri.indexOf("@")+1); 
} 
+0

感謝您給我們!愛,實際上有一個內置於android的類,就是這樣做的! –

+0

我的榮幸。當然,這是一個方便的類;) –

+0

有無論如何使這個工作在一個列表視圖的行中的textviews?它不適合我。還有一件事,你能解釋一下這個計劃的一部分嗎?謝謝 –

-1

嘗試這種方式.......

TextView tv[] = new TextView[subCategory.length]; 
    for (int i = 0; i < subCategory.length; i++) { 
      tv[i] = new TextView(this); 
      tv[i].setText(subCategory[i]); 
      tv[i].setId(i); 
      sCategoryLayout.addView(tv[i]); 
      tv[i].setOnClickListener(onclicklistener); 
     } 

onclicklistener方法:

OnClickListener onclicklistener = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     if(v == tv[0]){ 
      //do whatever you want.... 
     } 
    } 
}; 
相關問題