キャレットの描画と入力されたテキストの挿入をやった。Caretインターフェースのメソッドの名前を変えたり、引数を増やしたりメソッドの追加などをした。これだけあれば、テキストの挿入位置や描画の位置などに困らないはず。折り返し改行などでrowとcolumnからxとyを特定できないことがあるので、drawでは描画する座標が必要となる
import android.graphics.Canvas; import android.graphics.Paint; public interface Caret { int getColumn(); int getRow(); void move(int column, int row); void setColor(int color); void draw(Canvas canvas, int x, int y, int fontsize, Paint paint); }
テキストの挿入は、Caretのrowとcolumnを取得して、挿入するテキストと共に、テキストを管理しているDocumentクラスの以下のメソッドに渡す。そして再描画させると、変更後のテキストが描画される。
public void insert(int row, int column, String text){ texts.get(row).insert(column, text); }
しかし、問題発生。onKeyDownでキャレットを動かせないようだ。そもそもonKeyDownが発生してない?フォーカスされてないとテキストの入力もできないから、フォーカスされてるはずなんだけど…