Как применить Пуля и Нумерованный список в Android Edit-текст
Я пытаюсь применить маркированный список и список нумерации в Android-текст редактирования, когда пользователь нажимает кнопку. Для этого я попробовал ниже код.
Для пули
BulletSpan[] quoteSpan = str.getSpans(selectionStart, selectionEnd, BulletSpan.class);
// If the selected text-part already has UNDERLINE style on it, then we need to disable it
for (int i = 0; i < quoteSpan.length; i++) {
str.removeSpan(quoteSpan[i]);
exists = true;
}
// Else we set UNDERLINE style on it
if (!exists) {
str.setSpan(new BulletSpan(10), selectionStart, selectionEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
break;
и для нумерации
int number = 0;
NumberIndentSpan[] quoteSpan1 = str.getSpans(selectionStart, selectionEnd, NumberIndentSpan.class);
number ++;
// If the selected text-part already has UNDERLINE style on it, then we need to disable it
for (int i = 0; i < quoteSpan1.length; i++) {
str.removeSpan(quoteSpan1[i]);
exists = true;
}
if (!exists){
str.setSpan(new NumberIndentSpan(5, 15, number), selectionStart, selectionEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
break;
NumberIndentSpan.java
public class NumberIndentSpan implements LeadingMarginSpan {
private final int gapWidth;
private final int leadWidth;
private final int index;
public NumberIndentSpan(int leadGap, int gapWidth, int index) {
this.leadWidth = leadGap;
this.gapWidth = gapWidth;
this.index = index;
}
public int getLeadingMargin(boolean first) {
return leadWidth + gapWidth;
}
public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top,
int baseline, int bottom, CharSequence text, int start, int end,
boolean first, Layout l) {
if (first) {
Paint.Style orgStyle = p.getStyle();
p.setStyle(Paint.Style.FILL);
float width = p.measureText("4.");
c.drawText(index + ")", (leadWidth + x - width / 2) * dir, bottom
- p.descent(), p);
p.setStyle(orgStyle);
}
}
}
С помощью приведенного выше кода я могу добавить маркер и номер в определенной позиции, но проблема в том, что я хочу реализовать такие функции, как, когда я нажимаю клавишу ввода, он должен автоматически добавлять маркер к следующей строке и снова, если я нажимаю клавишу ввода без ввода текста он должен удалить эту Bullet, если я введу какой-нибудь текст во вторую строку, а затем, если я нажму клавишу ввода, он также должен добавить Bullet к следующей строке. Подобный вид функциональности, как это приложение. https://play.google.com/store/apps/details?id=com.hly.notes
То же самое относится и к листингу чисел, он всегда добавляет 1) он не увеличивает значение, и для листинга чисел я также хочу реализовать такой же набор функций, как пуля, когда я применяю список номеров и когда я нажимаю ввод, он должен автоматически добавлять 2) к следующей строке.
У любого есть идеи, как этого добиться. Заранее спасибо.