2017-05-09 3 views

Antwort

2

Verwenden str2 als SpannableString und verwenden setSpan() Methode zu finden, Teilzeichenfolge str1 und machen es BOLD.

Siehe documentation.

Try this:

TextView textView = (TextView) findViewById(R.id.textView); 

    String str1 = "substring"; 
    String str2 = "Find a substring and make it bold"; 

    if (str2.contains(str1)) { 

     SpannableString spannable = new SpannableString(str2); 
     spannable.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 
       str2.indexOf(str1), 
       str2.indexOf(str1) + str1.length(), 
       Spannable.SPAN_INCLUSIVE_INCLUSIVE); 

     textView.setText(spannable); 
    } else { 
     textView.setText(str2); 
    } 

OUTPUT:

enter image description here

Hope this ~

1
String str1 = "hello world, how are you?"; 
    String str2 = "world";   

    //check if str1 contains str2 
    if (!str1.contains(str2)) { 
     return; 
    } 

    //find index of str2 
    int startIndex = str1.indexOf(str2); 
    int endIndex = startIndex + str2.length(); 

    //create spannable 
    SpannableString spannable = new SpannableString(str2; 
    spannable.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), startIndex, endIndex, 0); 

    //set it to textview 
    textView.setText(spannable); 
1

können Sie Spannable String für das

if(str2.contain(str1){ 

SpannableStringBuilder sb = new SpannableStringBuilder(str2); 


// Span to make text bold 

StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD); 



// make them also bold 
sb.setSpan(bss, str2.indexOf(str1), str1.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); 

textView.setText(sb); 
}else{ 

textView.setText(str2); 

} 
0

Verwendung indexOf verwenden sub1 und Html.fromHtml zu finden Zeichenfolge zu forma

int start = str2.indexOf(str1); 
    String destStr = str2.substring(start)+"<b>" + str2.substring(start, str1.length()) + "</b> " + str2.substring(start+str1.length()); 
    textview.setText(Html.fromHtml(destStr)); 
+0

Verwenden Sie bitte spannable String als Html.fromHtml (String-Zeichenfolge) ist veraltet –

0

Mit Hilfe der Menschen, die hier kommentiert helfen, habe ich eine Funktion, die auch Groß-/Kleinschreibung ignoriert - um textView.set zu verwenden Text (boldifySubstring (str2, str1)); -

public static Spanned boldifySubstring(String string, String substring) { 
    //Create spannable string 
    SpannableString spannable = new SpannableString(string); 
    //Check if substring exists (ignore case) 
    if (string.toLowerCase().contains(substring.toLowerCase())) { 
     //Get start + end indexes (ignore case) 
     int start = string.toLowerCase().indexOf(substring.toLowerCase()); 
     int end = start + substring.length(); 
     //Make relevant parts bold 
     spannable.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
    } 

    return spannable; 
} 
Verwandte Themen