【Android】画面起動後にフォーカスを当てるViewを指定するのと指定した文字の後にカーソルを移動する
こんにちは。
今回はAndroidのフォーカスについてです。
画面起動後、EditTextなどにフォーカスを自動で当てたりしたいときがあります。
その方法を今回はメモしておきます。
起動後にEditTextにフォーカスを当てる
早速コードです。
レイアウトファイルで定義していきます。
<EditText android:id=”@+id/EditText01″ android:layout_width=”wrap_content” android:layout_height=”wrap_content” > <requestFocus/> </EditText>
フォーカスを当てておきたいViewに、
簡単ですね。
起動後にEditTextにフォーカスを当てない(違うViewに当てる)
今度は、逆に起動後にEditTextにフォーカスを当てない方法です。
起動後にフォーカスがあたってしまうと、キーボードが出てしまって邪魔な時があります。
それを防ぐには、上のを応用していきます。
<EditText android:id=”@+id/EditText01″ android:layout_width=”wrap_content” android:layout_height=”wrap_content”/> <TextView android:id="@+id/TextView01" android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:focusable="true" android:focusableInTouchMode="true" > <requestFocus /> </TextView>
こんな感じです。
EditTextではなく、他のViewに
android:focusable="true" や、android:focusableInTouchMode="true も忘れずにしましょう。
指定した文字の後にカーソルを移動
今度は、EditTextに文字列が入っている場合、その文字の指定した位置にカーソルを移動する方法です。
今回は、ボタンを押したらカーソルが移動するようにします。
動的に移動するので、今回はJavaの中でやります。
EditText edit = (EditText)findViewById(R.id.EditText01); Button btn = (Button)findViewById(R.id.Button01); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { edit.requestFocus(); // EditTextにフォーカスを移動 edit.setSelection(4); // 4文字目の後にカーソルを移動(最初の文字の前が0となる) String str = edit.getText().toString(); edit.setSelection(str.length()); // 文字列の最後の位置にカーソルを移動 } });
こんな感じです。
EditTextのsetSelection関数を使います。
結構簡単ですね。
以上です。
それでは。