我有一个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
注释,并且没有可以通过反射访问的字段。
下一个屏幕截图显示为 2 倍缩放
PS:任务的上下文是一个带有捏到缩放编辑文本的编辑器。计算大小的文本重新布局不是解决方案。因为我需要每个屏幕尺寸的便携式文档。