2011年11月8日火曜日

EditTextを選択状態で表示する

このエントリーをはてなブックマークに追加
テキストボックスを使う手段としてEditTextを利用する方法があります。ここでは、このEditTextが複数ある場合に、それらの中の1つにフォーカスを当てて選択状態とする方法についてまとめました。



リソースファイル上での選択状態の設定
EditTextをレイアウトのリソースファイルで定義しているのであれば、EditTextタグに<requestfocus>を追加することでアプリ起動時にそのEditTextが選択された状態になります。サンプルとして、LinearLayoutで3つのEditTextを表示し、アプリ起動時に2番目のテキストボックスを選択するプログラムを作りました。

関連:LinearLayoutで4つのボタンを表示する

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent"
        android:orientation="vertical">
<EditText
        android:id="@+id/edit_texit_1"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent/">
<EditText
        android:id="@+id/edit_text_2"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent">
        <requestFocus/>
</EditText>
<EditText
        android:id="@+id/edit_text_3"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent/">
</LinearLayout>


EditTextTest.java
package sgl.example.edittext;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.widget.EditText;

public class EditTextTest extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);

        //((EditText)findViewById(R.id.edit_texit_1)).requestFocus();
    }
}

ちなみに、edit_text_2とedit_text_3にを設定すると、edit_text_3が選択された状態になりました。EditTextの選択状態は後に追加されたものが優先されそうです。


コード上での選択状態の設定
EditTextのrequestFocusメソッドを呼び出すことで、呼び出したEditTextを選択状態にします。上記のEditTextTest.java中のコメントアウトを外すとEditText1が選択状態になります。

0 件のコメント:

コメントを投稿