2014-04-10 71 views
0

我想給textview添加下劃線和顏色,但它是一個簡單的文本,不是鏈接,不是電話號碼,只是簡單的「Hello world」,我想要用下劃線和藍色鏈接,喜歡顏色。Linkify any text Android

它沒有這樣做:

view.setMovementMethod(LinkMovementMethod.getInstance()); 

Linkify.addLinks(view, Linkify.ALL); 

謝謝!我只是強調文字爲Const建議並更改textview的顏色。但我想xoxol_89的答案在我的情況下是正確的,應該被接受。

+1

你不需要Linkify了點。請參閱此主題以瞭解如何執行此操作:http://stackoverflow.com/questions/10019001/how-do-you-underline-a-text-in-android-xml/10019093#10019093 – Const

回答

0

你嘗試使用Spannable
例如

/** 
     * Method allocates filtering substring in all contacts yellow color, 
     * that satisfy the user's search 
     * @param inputText - DisplayName 
     *  filtText - filtering Text 
     * @return String with allocating substring (Spannable) 
     */ 
    public static Spannable changeBackgroungFiltText(CharSequence inputText, String filtText, int color) { 
     Spannable str = null; 
     if(inputText != null) 
     { 
     String inputStr = inputText.toString(); 
     String inputLowerCaseStr = inputStr.toLowerCase(); 
     String filtLowerCaseStr = filtText.toLowerCase(); 
//  Spannable str = new SpannableStringBuilder(inputStr); 
      str = new SpannableStringBuilder(inputStr); 
     if (filtText.length() != 0) 
     { 
      int indexStart = 0; 
      while (true) 
      { 
       int indexCur = inputLowerCaseStr.indexOf(filtLowerCaseStr, indexStart); 
       if (indexCur != -1) { 
        int start = indexCur; 
        int end = indexCur + filtText.length(); 
        int flag = Spannable.SPAN_EXCLUSIVE_EXCLUSIVE; 
        str.setSpan(new ForegroundColorSpan(color),start, end, flag); 
        //str.setSpan(new BackgroundColorSpan(highlightColor), start, end, flag); 
        indexStart = indexCur + 1; 
       } else { 
        return str; 
       } 
      }   
     } else { 
      return str; 
     } 
     } 
     return str; 
    } 
0

你可以做,以4種方式:

1.Automatically linkifies採用了android:自動鏈接=」所有」

2.通過setMovementMethod鏈接文本

3.使用Html.fromHtml鏈接爲html代碼()

4.Link串由SpannableString

,你可以找到例子here

0

您可以使用SpannableString這樣的:

final SpannableString text = new SpannableString("Hello World!"); 

    final int startAt = 0; 
    final int endAt = text.length(); 
    final int sampleColor = Color.parseColor("#3333ff"); 

    text.setSpan(new UnderlineSpan(), startAt, endAt, 0); 
    text.setSpan(new ForegroundColorSpan(sampleColor), startAt, endAt, 0); 

    textView.setText(text);