2015-10-19 41 views
1

因此,我一直在研究一個項目,以添加iOS上的功能,其中我可以分析特定關鍵詞類型的文本字段,在這種情況下, ,並突出顯示它們以便它們可點擊並以意圖啓動新活動,在這種情況下,將日曆啓動到提及的日期。我完成了一個程序,可以提取所需的單詞組,並在原始字符串中提供其索引值,並在毫秒中提供相關日期以用於該意圖。Android,在文本視圖中添加不同數量的可點擊跨度

我遇到的問題是弄清楚如何動態地向文本字段添加正確的可擴展字符串,以便我有一個地方可以存儲與我的程序中每個對象關聯的onClick動作。如果存在靜態數量的突出顯示的對象,我可以編寫有限數量的可以跨越的字符串來創建,但在這種情況下,程序可能會找到一個相關的日期關鍵字或可能找到50個字符。我不知道如何創建可跨越的字符串對於每個索引範圍,我的程序都會生成並將每次點擊操作關聯起來。

例如:

原始字符串:「你想下個星期二吃晚飯嗎?」

程序發現:「下週二」開始:30結束:43時間:1445947214457

希望重新格式化:「你想吃飯下週二」 //可點擊

回答

1

您只有一個SpannableString。在SpannableString中你會有很多跨度。

例如,下面的方法是從this sample project

private void searchFor(String text) { 
    TextView prose=(TextView)findViewById(R.id.prose); 
    Spannable raw=new SpannableString(prose.getText()); 
    BackgroundColorSpan[] spans=raw.getSpans(0, 
              raw.length(), 
              BackgroundColorSpan.class); 

    for (BackgroundColorSpan span : spans) { 
     raw.removeSpan(span); 
    } 

    int index=TextUtils.indexOf(raw, text); 

    while (index >= 0) { 
     raw.setSpan(new BackgroundColorSpan(0xFF8B008B), index, index 
      + text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
     index=TextUtils.indexOf(raw, text, index + text.length()); 
    } 

    prose.setText(raw); 
    } 

在這裏,我發現子對於給定的搜索字符串匹配,並用BackgroundColorSpan突出他們。我不知道會有多少這樣的比賽。我爲每個創建了一個BackgroundColorSpan。在你的情況下,你的「搜索」標準將會不同,跨度也會不同,但基本方法應該是相同的。

+0

因此,唯一不能解決的問題是我如何爲每個跨度附加點擊偵聽器。設置超鏈接格式或其他功能將與本例中的功能完全相同,但我還必須將每個跨度與必須指向的獨立時間配對。我可以創建某種類型的對象,其中時間是跨度的屬性,但我不知道如何將處理後的跨度保持在當前時間。 –

+0

@GraysonGould:「我如何爲每個跨度添加點擊監聽器」 - 你的跨度可能是'ClickableSpan'的一些自定義子類,據推測。 「我不知道如何保持指定的處理時間」 - 在你的'ClickableSpan'子類中使用一個字段。 – CommonsWare

相關問題