搜尋關鍵字變紅,指定欄位變色 一行程式碼簡單整合 搜尋關鍵字變紅,Android字型變紅,指定欄位變紅
阿新 • • 發佈:2019-02-17
搜尋關鍵字變紅,指定欄位變色
有時候我們搜尋中的關鍵字需要變紅或者變為別的顏色,我自己重寫了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中輸入的關鍵字就可以啦 */ }
}
效果圖
原始碼下載地址