mucchinのAndroid戦記

Androidアプリで、起動後最初にカーソルを当てるViewを指定する方法

Androidアプリで、起動後一番最初にカーソル(フォーカス)を当てるViewを指定する方法は?

例えば、以下のような画面があったとします。
TextView、EditText一つ目、Button、EditText二つ目が配置されているような画面。
(どんなアプリだ!という突っ込みは無しです。(笑))
上の例ですと、何も考えずに配置すると、起動時は一つ目のEditTextにフォーカスがあたります。
これを二つ目のEditTextにフォーカスを当てるという設定をする方法をご紹介します。


今回のような画面レイアウトですと、レイアウトXMLは以下のようになっていますよね。
<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” android:orientation=”vertical” android:layout_width=”fill_parent” android:layout_height=”fill_parent”
>
<TextView
   android:layout_width=”fill_parent”
   android:layout_height=”wrap_content”
   android:text=”@string/hello”
/>
<EditText
   android:id=”@+id/EditText01″
   android:layout_width=”wrap_content”
   android:layout_height=”wrap_content”
></EditText>
<Button
   android:text=”@+id/Button01″
   android:id=”@+id/Button01″
   android:layout_width=”wrap_content”
   android:layout_height=”wrap_content”>
</Button>
<EditText
   android:id=”@+id/EditText02″
   android:layout_width=”wrap_content”
   android:layout_height=”wrap_content”
></EditText>
</LinearLayout>
このレイアウトXMLに、以下の太字部分を付け加えるだけです。
<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” android:orientation=”vertical” android:layout_width=”fill_parent” android:layout_height=”fill_parent”
>
<TextView
   android:layout_width=”fill_parent”
   android:layout_height=”wrap_content”
   android:text=”@string/hello”
/>
<EditText
   android:id=”@+id/EditText01″
   android:layout_width=”wrap_content”
   android:layout_height=”wrap_content”
></EditText>
<Button
   android:text=”@+id/Button01″
   android:id=”@+id/Button01″
   android:layout_width=”wrap_content”
   android:layout_height=”wrap_content”>
</Button>
<EditText
   android:id=”@+id/EditText02″
   android:layout_width=”wrap_content”
   android:layout_height=”wrap_content”
><requestFocus/></EditText>
</LinearLayout>
スポンサーリンク




フォーカスを当てたいViewに、requestFocusタグを付けるだけです。
Eclipseで簡単に設定する、という事は出来ないみたいでした。
手書きで追記してください。

上の例をよく見て、付ける場所に注意してください。
あとは、頭文字を小文字にする、という事も注意してください。
注意点はこれぐらいですかね。

ちなみに、requestFocusを設定していない場合の動作は、特に既定されていないらしいです。
既定されていない、という事は、自分で設定しておく事が望ましいでしょうね。

起動すると、下の画像のように、下側のEditTextにフォーカスが当たっています。