Nếu bạn muốn thay đổi trạng thái của tất cả các trường hợp của một cụ String
bên trong một TextView
văn bản (trường hợp không nhạy cảm), bạn có thể sử dụng StringBuilder
s và SpannableString
như thế này:
StringBuilder textBuilder = new StringBuilder(myTextView.getText().toString());
StringBuilder searchedTextBuilder = new StringBuilder((mySearchedString));
SpannableString spannableString = new SpannableString(myTextView.getText().toString());
int counter = 0;
int index = 0;
for (int i = 0;i < textBuilder.length() - mySearchedString.length() - 1;i++)
{
counter = 0;
if (Character.toLowerCase(textBuilder.charAt(i)) == Character.toLowerCase(searchedTextBuilder.charAt(index)))
{
counter++;
index++;
for (int j = 1,z = i + 1;j < mySearchedString.length() - 1;j++,z++)
{
if (Character.toLowerCase(textBuilder .charAt(z)) == Character.toLowerCase(searchedTextBuilder .charAt(index)))
{
counter++;
index++;
}
else
{
index++;
if (index % mySearchedString.length() == 0)
{
index = 0;
}
break;
}
}
if (counter == mySearchedString.length() - 1) // A match
{
spannableString.setSpan(new ForegroundColorSpan(Color.RED), i,
i + mySearchedString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // Do the change you want(In this case changing the fore ground color to red)
index = 0;
continue;
}
else
{
index = 0;
continue;
}
}
}
myTextView.setText(spannableString);
}
- Lưu toàn bộ văn bản
TextView
bên trong một số StringBuilder
.
- Lưu chuỗi tìm kiếm bên trong một
StringBuilder
.
- Store
TextView
văn bản wholre bên trong một SpannableString
- Thực hiện một thao tác đơn giản để tìm tất cả các
String
trường bên trong văn bản TextView
và thay đổi chúng khi đạt được.
- Đặt giá trị văn bản của
TextView
thành SpannableString
.
có thể trùng lặp của [? Có thể có nhiều phong cách bên trong một TextView] (http://stackoverflow.com/questions/1529068/is-it- có thể-to-có-nhiều kiểu-bên trong-một-văn bản xem) – blahdiblah
http://stackoverflow.com/questions/9754076/which-html-tags-are-supported-by-android-textview/35271588#35271588 –