У меня есть EditText
Я хочу увеличить его и прокручивать с помощью setScaleX
/setScaleY
, и он отлично работает - текст редактируется в правильной позиции.
Но когда я пытаюсь выбрать текст - он рисует дескрипторы выделения в позиции, например, когда текст не масштабируется. Известно ошибка.
Ожидаемый результат, потому что ручки рисуются во всплывающем окне, связанном с размером представления.
Все действия на android.widget.Editor
нацелены на его поле private TextView mTextView;
. И если мы будем настраивать собственный редактор отражением, я не знаю, что делать с частными методами, которые не являются допустимыми.
Также отображаются образы выделения в окне всплывающих окон android.widget.Editor.HandleView#HandleView
, рассчитанные в макете, и мне нужно только DynamicLayout
, но это не имеет никакого значения для наших целей.
Метод android.text.Layout#getPrimaryHorizontal(int, boolean)
является общедоступным, и его значение можно умножить на масштаб, но для этого нам нужно расширить и переопределить частный метод android.widget.TextView#makeSingleLayout
, но это проблема.
Также мы могли бы реализовать наш собственный макет со всеми необходимыми методами переопределения, но все методы, которые мы можем переопределить, отмечены аннотацией @hide
и нет полей, к которым можно получить доступ с отражением.
Следующий снимок экрана для масштабирования на 2x
PS: контекст задачи - это редактор с текстом редактирования с фиксированным увеличением. Ретрансляция текста с вычислением размера не является решением. Потому что мне нужен Portable Document для каждого размера экрана.