1
0

More than 1 year has passed since last update.

EditTextのカーソルの行の位置を取得するには

Posted at

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))

実際に使用するときは一番上の行なのかを判定したり、工夫が必要になると思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0