Ciao vorrei sapere come evidenziare tutte le parole che viene immesso nella EditText e apparirà nel TextView questo post è legato a questo Highlight Textview Using EditTextEvidenziare tutte le parole che viene cercato tramite EditText
11
A
risposta
21
Say et è il tuo EditText e tv è un oggetto TextView. Utilizzare il seguente codice:
public class MotivationalQuotesActivity extends Activity {
/** Called when the activity is first created. */
Button next;
EditText et;
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et = (EditText) findViewById(R.id.et);
tv = (TextView) findViewById(R.id.tv);
tv.setText("The name of our country is Bangladesh. Bangladesh is a land of rivers.");
next = (Button) findViewById(R.id.button1);
next.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText("The name of our country is Bangladesh. Bangladesh is a land of rivers.");
String ett =et.getText().toString();
String tvt =tv.getText().toString();
int ofe = tvt.indexOf(ett,0);
Spannable WordtoSpan = new SpannableString(tv.getText());
for(int ofs=0;ofs<tvt.length() && ofe!=-1;ofs=ofe+1)
{
ofe = tvt.indexOf(ett,ofs);
if(ofe == -1)
break;
else
{
WordtoSpan.setSpan(new BackgroundColorSpan(0xFFFFFF00), ofe, ofe+ett.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(WordtoSpan, TextView.BufferType.SPANNABLE);
}
}
}
});
}
}
Il risultato è:
0
Un modo semplice e veloce di evidenziare un testo, è quello di utilizzare stringa metodo replace. Sostituire la stringa il desiderio con tag font
Spanned strHTML= Html.fromHtml("<center>"+full_string.replaceAll(strSrch,"<font color='yellow'>"+strSrch+"</font>")+"</center><br/>");
TextView tv=(TextView) v.findViewById(R.id.txtPager);
tv.setText(strHTML,TextView.BufferType.SPANNABLE);
vi ringrazio molto, è davvero aiutarmi con il mio progetto .. – Mordiggian
ho 1 domanda, come cancellare o ripristinare il momento clou nella parola? – Mordiggian
Se si desidera cancellare l'evidenziazione, è possibile utilizzare 2 approcci: ** Primo: ** Impostare il testo non elaborato su TextView come 'tv.setText (" Il nome del nostro paese è il Bangladesh.Il Bangladesh è una terra di fiumi. ");' ** Secondo: ** Usa il metodo di evidenziazione sopra ma usa il colore dello sfondo (diciamo ** nero ** in questo caso) come il colore dell'evidenziazione come: 'WordtoSpan.setSpan (nuovo BackgroundColorSpan (colore .black), ofe, ofe + ett.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); ' –