2017-08-15 4 views
0

Je construis une application android où j'analyse un ensemble de données et affiche dans listView. Maintenant, quand un utilisateur cherche un mot dans cet ensemble de données, je souligne ce mot de vue de texte. Maintenant, le problème est que lorsque le mot de recherche est au début, il est affiché en tant que texte, la ligne maximale 1 mais si le dernier mot du paragraphe est en surbrillance, mais je veux afficher ce mot en surbrillance en mode texte avec la ligne maxi 1.Comment faire pour afficher la chaîne en surbrillance dans textView dans android?

Y at-il un moyen d'ajuster la chaîne en mode texte et d'afficher la zone en surbrillance.

Répondre

0

Ce dont vous avez besoin est d'utiliser des travées. Par exemple, vous pouvez mettre en évidence un texte comme celui-ci:

TextView textview = (TextView)findViewById(R.id.mytextview); 
Spannable spannable = new SpannableString("Hello World");   
spannable.setSpan(new BackgroundColorSpan(Color.YELLOW), 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
textview.setText(spannable); 
0

Déjà je dois essayer dans un fragment. J'espère que ceci vous aidera.

final TextView sampleText =(TextView)findViewById(R.id.tv_sample_text); 
EditText ed_texthere =(EditText)findViewById(R.id.ed_texthere); 

final String fullText = sampleText.getText().toString(); 

ed_texthere.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

    } 

    @Override 
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
     String typedText = charSequence.toString(); 
     if (typedText != null && !typedText.isEmpty()) { 
      int startPos = fullText.toLowerCase(Locale.US).indexOf(typedText.toLowerCase(Locale.US)); 
      int endPos = startPos + typedText.length(); 
      if (startPos != -1) { 
       Spannable spannable = new SpannableString(fullText); 
       ColorStateList blueColor = new ColorStateList(new int[][]{new int[]{}}, new int[]{Color.BLUE}); 
       TextAppearanceSpan highlightSpan = new TextAppearanceSpan(null, Typeface.BOLD, -1, blueColor, null); 
       spannable.setSpan(highlightSpan, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
       sampleText.setText(spannable); 
      } else { 
       sampleText.setText(fullText); 
      } 
     } 
    } 

    @Override 
    public void afterTextChanged(Editable editable) { 

    } 
});