Привет всем, я делаю приложение, в котором пользователь может выделять текст курсивом при нажатии кнопки.
// Captures Contextual Menu Clicks//
public void onContextualMenuItemClicked(MenuItem item) {
int id = item.getItemId();
if (id == R.id.bold) {
// do some stuff
}
if (id == R.id.italic) {
int startSelection = noteContent.getSelectionStart();
int endSelection = noteContent.getSelectionEnd();
Spannable spannable = noteContent.getText();
spannable.setSpan(new StyleSpan(Typeface.ITALIC) , startSelection , endSelection , 0);
StyleSpanRemover spanRemover = new StyleSpanRemover();
spanRemover.RemoveStyle(spannable,startSelection,endSelection,Typeface.ITALIC);
}
этот код делает его курсивом
int startSelection = noteContent.getSelectionStart();
int endSelection = noteContent.getSelectionEnd();
Spannable spannable = noteContent.getText();
spannable.setSpan(new StyleSpan(Typeface.ITALIC) , startSelection , endSelection , 0);
Это делает его не курсивным
StyleSpanRemover spanRemover = new StyleSpanRemover();
spanRemover.RemoveStyle(spannable,startSelection,endSelection,Typeface.ITALIC
Я хочу, чтобы пользователь нажимал одну и ту же кнопку, чтобы выделять и не выделять курсивом. Что, если я могу использовать статус, чтобы получить, какой TypeFace является составным выбранным словом? Таким образом, он знает, выделять курсивом или нет.
ОБНОВЛЕНИЕ: это то, что у меня есть сейчас
int startSelection = noteContent.getSelectionStart();
int endSelection = noteContent.getSelectionEnd();
Spannable spannable = noteContent.getText();
StyleSpan[] spans = spannable.getSpans(startSelection, endSelection, StyleSpan.class);
if (spans.length == 0) {
spannable.setSpan(new StyleSpan(Typeface.ITALIC), startSelection, endSelection , 0);
} else {
spannable.setSpan(new StyleSpan(Typeface.NORMAL), startSelection, endSelection , 0);
}
хотя код запускает код
spannable.setSpan(new StyleSpan(Typeface.NORMAL), startSelection, endSelection , 0);
и возвращает его в нормальное состояние. но он не установит значение spans.length обратно в ноль, поэтому я не могу снова выделить его курсивом, как установить значение spans.length в ноль.