EditTextのカーソル位置を取得するのは、調べたりするとすぐ出てきたりしますが、カーソルが何行目なのかを取得する方法が、無かったので忘れないようにする為、書いておく事にします。
EditTextのカーソルの行の位置を取得する方法
val layout: Layout = binding.editText.layout
val offset: Int = binding.editText.selectionEnd // カーソルの位置
val line = layout.getLineForOffset(offset) //引数に指定したoffsetの行番号(カーソルが何行目か)
val primaryHorizontal = layout.getPrimaryHorizontal(offset) // 引数に指定したoffsetの水平位置が返ってきます(カーソルが左端からの水平位置)
EditTextのLayoutを使う事で、取得することができました。
カーソルを上に移動させる方法
binding.editText.setSelection(layout.getOffsetForHorizontal(line -1, primaryHorizontal))
実際に使用するときは一番上の行なのかを判定したり、工夫が必要になると思います。