Вы должны поместить событие textwatcher в edittext, это событие выполняется, когда пользователь вводит символ (любой, введенный с клавиатуры).
В вашем случае, когда пользователь вводит один символ в тексте редактирования, вы получаете дырочный текст, а затем получаете длину этого текста, это ваша позиция курсора и общая длина значения в тексте.
в соответствии с вашим третьим вопросом, у вас есть весь текст, написанный в редактируемом тексте с использованием вышеуказанного метода, затем вы конвертируете весь текст в значение ascii, затем сравниваете каждый символ с 13 (это значение ascii для ввода на клавиатуре) и увеличиваете счетчик строки, когда он условие true, используя это, вы не найдете строки в тексте редактирования. Я даю вам пример того, как поместить средство просмотра текста в текст редактирования, который вы изменяете в этом коде, и конвертировать его в соответствии с вашими условиями.
ed.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
textlength = ed.getText().length();
);
}
});