У меня есть editText, в котором я хочу выделить текст, который я выбираю. Я использую контекстную панель действий с кнопкой, чтобы выделить выбранное слово жирным шрифтом. Проблема в том, что если я выделяю слово жирным шрифтом, я не могу выделить другое слово, а если я удаляю интервал из этого слова, я не могу добавить его снова. et - это editText, в котором я пишу, и я также использую 2 SpannableString, чтобы поймать оставшийся текст, сохраняя возможные диапазоны, добавленные ранее.
ПОЛЬЗОВАТЕЛЬСКИЙ ОБРАТНЫЙ ЗВОНОК
cs1 = new StyleSpan(Typeface.BOLD);
class CustomCallback implements ActionMode.Callback {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
//exploiting the CAB
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
menu.removeItem(android.R.id.selectAll);
return true;
}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
ДЕЙСТВИЕ ДОБАВИТЬ ЖИРНЫМ
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
int start = et.getSelectionStart();
int end = et.getSelectionEnd();
SpannableStringBuilder s_before,s_next;
SpannableStringBuilder ssb = new SpannableStringBuilder(et.getText().subSequence(start, end));
s_before= new SpannableStringBuilder (et.getText().subSequence(0, start));
s_next= new SpannableStringBuilder (et.getText().subSequence(end, et.length()));
switch(item.getItemId()) {
case R.id.bold:
int a=ssb.getSpanStart(cs1);
int b=ssb.getSpanEnd(cs1);
if(a==-1 && b==-1){
ssb.setSpan(cs1, 0, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
else{
ssb.removeSpan(cs1);
}
et.setText("");
et.append(s_before);
et.append(ssb);
et.append(s_next);
return true;
Как я могу это решить? Заранее спасибо.