2011-11-03 182 views
4

在我的應用程序中,我編輯文本如下。在Android中編輯文本焦點

EditText1 EditText2 
EditText3 EditText4 
EditText5 EditText6 

在XML中,我宣佈android:imeOptions="actionNext",也是我寫

  editText1.setOnEditorActionListener(new EditText.OnEditorActionListener() { 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
       // TODO Auto-generated method stub 
       if (actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_NEXT) { 
        editText2.requestFocus(); 

        return false; 
        } 
       return false; 
      } 
     }); 

現在,在虛擬鍵盤在編輯文本1,如果我按下一步我得到重點放到編輯文字3,而不是editText2等

我怎樣才能專注於EditText2,而不是edittext3 爲我的應用程序用戶只按「下一步或完成」,他永遠不會去追蹤球。

回答

4

你可以嘗試添加android:nextFocusDown屬性在您的EditTexts

+1

我把下一個重點放在下面,但沒有用 –

+0

你可以在你添加'android:nextFocusDown'的地方發佈代碼。只是一些'EditTexts'的xml。 –

+0

YAA,投入的nextfocus下來ID代碼後,它的正常工作感謝ü[R支持 –

1

我剛剛用以下佈局測試了您的代碼,它按預期工作。 (預期=點擊虛擬鍵盤集中傳遞給editText2旁)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" android:layout_width="fill_parent" 
android:layout_height="fill_parent" android:layout_gravity="center" 
android:padding="15dip"> 
<LinearLayout android:orientation="vertical" 
    android:layout_height="wrap_content" android:layout_width="fill_parent" 
    android:layout_gravity="center" android:paddingLeft="20dip" 
    android:paddingRight="20dip"> 
    <TableLayout android:layout_height="wrap_content" 
     android:layout_width="wrap_content" android:layout_gravity="center" 
     android:stretchColumns="*"> 

     <TableRow> 
      <EditText android:id="@+id/edt1" /> 
      <EditText android:id="@+id/edt2" /> 
     </TableRow> 

     <TableRow> 
      <EditText android:id="@+id/edt3" /> 
      <EditText android:id="@+id/edt4" /> 
     </TableRow> 

     <TableRow> 
      <EditText android:id="@+id/edt5" /> 
      <EditText android:id="@+id/edt6" /> 
     </TableRow> 


    </TableLayout> 
</LinearLayout> 

這裏也是源

package com.stackoverflow.test; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.KeyEvent; 
    import android.view.inputmethod.EditorInfo; 
    import android.widget.EditText; 
    import android.widget.TextView; 

public class TestEditTextFocusActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    EditText editText1 = (EditText)findViewById(R.id.edt1); 
    final EditText editText2 = (EditText)findViewById(R.id.edt2); 

    editText1.setOnEditorActionListener(new EditText.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, 
       KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_DONE || 
        actionId == EditorInfo.IME_ACTION_NEXT) { 
      editText2.requestFocus(); 
      return false; 
      } 

      return false; 
     } 
    }); 
} 

}

+0

仍然不適合我 –

+0

我使用Eclipse Indigo和提供的模擬器。目標是Android 2.2(API等級8)。所以,如果你創建一個新的項目,只是複製粘貼代碼,它不爲你工作? – hovanessyan

1
ed1.setOnEditorActionListener(new EditText.OnEditorActionListener() { 
      public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
        // TODO Auto-generated method stub 
        if (actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_NEXT) { 
         ed1.setNextFocusDownId(R.id.ed2); 

         return false; 
         } 
        return false; 
       } 
      }); 

寫完上面的代碼後,我的問題就解決了,謝謝大家的回答和支持。