Программное вычисление смещения символа относительно начала текста TextFieldValue jetpack compose

Помогите, пожалуйста, советом, а то уже всю голову сломал. В jetpack compose есть TextField, который работает с TextFieldValue. В TextFieldValue есть текст на несколько экранов, который скролится. В TextFieldValue.selection хранится позиция курсора, которая попадает туда при тапе (нажатии) на экран. В selection в этом случае окажется смещение позиции символа текста относительно начала текста. Но мне необходимо определять программно без нажатия (наверное исходя из координат экрана) смещение позиции первого символа в левом верхнем углу текущего экрана. То есть чтобы у меня была возможность программно определить смещение в тексте первого символа на экране в левом верхнем углу. То есть нужно получить то же значение, которое я бы получил в TextFiledValue.selection при нажатии на этот символ, но только программно, без нажатий. В java аналогом этого был EditText.getOffsetForPosition(x, y). Нашел, что getOffsetForPosition есть в TextLayoutResult, но он применяется только с onTextLayout, который есть только у BasicTextField (в TextField его нет), а мне нужно именно в TextField с использованием TextFieldValue. Думал из-за этого использовать BasicTextField, так как он позволяет получать getOffsetFOrPosition через onTextLayout, но BasicTextField не умеет устанавливать позицию курсора, как это умеет делать TextFieldValue. Злая ирония: BasicTextField умеет определять позицию символа, но не умеет устанавливать позицию курсора, а TextFieldValue наоборот - умеет устанавливать, но не умеет определять. А мне нужно и то, и другое. Есть ли какая-то возможность в TextField с использованием TextFieldValue получать программно смещение первого символа на экране (левого верхнего) относительно начала текста без нажатий? Или в BasicTextField устанавливать позицию курсора вручную?


Ответы (0 шт):