2011-11-06

在 Android 對 EditText 取得 focus

關鍵在 <requestFocus/> 或者 editText.requestFocus()。

main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <LinearLayout 
      android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content">
        <TextView  
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content"
          android:text="Name"/>
        <EditText  
            android:id="@+id/name"
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content">
          <requestFocus/>
        </EditText>
    </LinearLayout>
    <LinearLayout 
      android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content">
        <TextView  
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content"
          android:text="Phone"/>
        <EditText  
            android:id="@+id/phone"
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content">
          <requestFocus/>
        </EditText>
    </LinearLayout>
</LinearLayout>
FocusActivity.java
public class FocusActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        EditText name= (EditText) this.findViewById(R.id.name);
        name.requestFocus();
    }
}
當多個地方使用 requestFocus,只會有一個地方生效,就是最後執行 requestFocus 的地方,由以上的範例可以看出來,phone 的 <requestFocus/>  蓋過 name 的 <requestFocus/> ,而 name 的 requestFocus() 又蓋過 phone 的 <requestFocus/>。

沒有留言:

張貼留言