[Android] EditText の先頭にカーソル位置を移動させるのが難しかった件

| トラックバック(0) |

EditText のカーソル位置を移動させるには

EditText のカーソル位置を移動させるには setSelection(index) を呼び出します。

 

例えば、9文字("123456789")のテキストが設定されている EditText があった場合、

カーソル位置を 8 文字目の右の位置に移動させるには、setSelection(8) を呼び出します。

EditText2.png

 

同様に、カーソル位置を 9 文字目の右の位置に移動させるには、setSelection(9) を呼び出します。

(ここでの 9 文字目は、テキストの最後の位置です。)

EditText1.png

 

では、カーソル位置を 0 文字目、つまり、テキストの先頭に移動させたい場合はどうでしょうか?

 

これまでの流れから setSelection(0) で良さそうなのですが、

実際の実行結果は、以下のように期待どおりになりませんでした。。。

EditText1.png

 

色々と調べたのですが、バグなのか仕様なのかわからず、試行錯誤した結果、

カーソル範囲選択である setSelection(start, stop) を呼び出した後に、

setSelection(0) を呼び出してあげると上手くいくことがわかりました。。。

EditText3.png

くっ、苦しすぎる・・・。

もっと良い方法はないんでしょうか・・・。

 

ソースコード

EditText editText = (EditText) findViewById(id.edit_text);
editText.setText("123456789");

editText.setSelection(0, editText.getText().length());
editText.setSelection(0);

 

おまけ

上記の例の場合、selSelection(0, editText.getText().length()) は setSelection(0, 9) の呼び出しと等しく、

実行結果は以下のようテキストの全選択とになります。

EditText4.png

関連記事

トラックバック(0)

トラックバックURL: http://mt.adakoda.com/mt-tb.cgi/385

2010年9月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

自作フリーソフトウェア