Создание пользовательского вида в стиле EditText с нуля (стандартный вид)

Я хочу создать свои собственные настраиваемые элементы управления, кроме стандартных представлений/виджетов Android, включая View, ScrollBar, TextView, EditText,... И уже завершенные другие, но еще не TextView/EditText.

Два элемента управления взаимодействуют с программной клавиатурой в зависимости от фокуса или нет. Кроме того, вы можете набирать/редактировать текст элемента управления с помощью клавиатуры. Более сложная часть связана с управлением кареткой. Эти проблемы возникают из-за того, что элемент управления наследует View, а не TextView/EditText.

Вы можете спросить, почему я выбрал такой сложный путь, не используя стандартные и настраивая только часть из них? Это связано с одной фатальной проблемой: стандартный TextView/EditText не может поддерживать большие файлы (файлы размером несколько МБ) и отстает от них. Кроме того, некоторыми важными функциями-членами являются private, а не protected или public. Поэтому мы не можем полностью настроить их так, как хотим.

Вот почему я создал одну специализированную программу просмотра/редактора текста, которая поддерживает большие файлы (даже более 100 МБ). Функция просмотра уже реализована и работает хорошо.

Теперь функция редактора осталась, и именно поэтому я здесь, чтобы попросить вас о помощи. Пожалуйста, дайте мне знать, какое решение является лучшим, и я был бы признателен, если бы вы могли предоставить несколько примеров кода.

Спасибо

P.S. Это то, что я сделал до сих пор.

скриншот

apk


person Astir Trotter    schedule 14.06.2017    source источник
comment
Что вы пробовали?   -  person ImAtWar    schedule 14.06.2017
comment
Пожалуйста, добавьте его к своему вопросу в блоках кода   -  person ImAtWar    schedule 14.06.2017
comment
TextView расширяет View и реализует ViewTreeObserver.OnPreDrawListener.   -  person Kamran Ahmed    schedule 14.06.2017
comment
Да, но это только для рисования. Рисование теперь не проблема, а просто взаимодействие с софт-клавиатурой.   -  person Astir Trotter    schedule 14.06.2017