1. 程式人生 > >搜尋關鍵字變紅,指定欄位變色 一行程式碼簡單整合 搜尋關鍵字變紅,Android字型變紅,指定欄位變紅

搜尋關鍵字變紅,指定欄位變色 一行程式碼簡單整合 搜尋關鍵字變紅,Android字型變紅,指定欄位變紅

 搜尋關鍵字變紅,指定欄位變色

有時候我們搜尋中的關鍵字需要變紅或者變為別的顏色,我自己重寫了textview。使用起來特別方便
使用步驟

1,把下面自定義的MyTextView 複製到專案中

import android.content.Context; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.style.ForegroundColorSpan; import android.util.AttributeSet; import android.widget.TextView;

import java.util.ArrayList; import java.util.List;

//制定字型變色,自定義textview public class MyTextView extends TextView {

public MyTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public void setSpecifiedTextsColor(String text, String specifiedTexts, int color) {
    List<Integer> sTextsStartList = new ArrayList<>();

    int sTextLength = specifiedTexts.length();
    String temp = text;
    int lengthFront = 0;//記錄被找出後前面的欄位的長度
    int start = -1;
    do {
        start = temp.indexOf(specifiedTexts);

        if (start != -1) {
            start = start + lengthFront;
            sTextsStartList.add(start);
            lengthFront = start + sTextLength;
            temp = text.substring(lengthFront);
        }

    } while (start != -1);

    SpannableStringBuilder styledText = new SpannableStringBuilder(text);
    for (Integer i : sTextsStartList) {
        styledText.setSpan(
                new ForegroundColorSpan(color),
                i,
                i + sTextLength,
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }

    setText(styledText);
}

}

2,使用只需要一行程式碼就可以完事 public class TextActivity04 extends Activity { private MyTextView textView;

public String result = "關鍵字變色,特別簡單,只需要一行程式碼,就可以實現關鍵字變紅";

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test_04_layout);

    textView = (MyTextView)findViewById(R.id.tv);
    textView.setSpecifiedTextsColor(result, "關鍵字", Color.parseColor("#FF0000"));
    /*
        textView.setSpecifiedTextsColor(result, "關鍵字", Color.parseColor("#FF0000"))中result可以換成你的搜尋結果
        關鍵字直接換成你的EditText中輸入的關鍵字就可以啦

    */
}

}

效果圖


原始碼下載地址