KeyCode_input到下一个编辑文本

在edittext中,input“Enter”键后,系统在里面新build一行。 我想专注于下一个edittext,没有新行。 如何编码? 我在xml中的代码如下

<EditText android:id="@+id/txtNPCode" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18sp" android:layout_alignLeft="@+id/lblNPCode" android:layout_below="@+id/lblNPCode" android:layout_centerHorizontal="true"/> <EditText android:id="@+id/txtCNPCode" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18sp" android:layout_alignLeft="@+id/lblCNPCode" android:layout_below="@+id/lblCNPCode" android:layout_centerHorizontal="true"/> 

我也将关键代码放在setOnKeyListener中

  tCNPCode.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode == 66) { Toast.makeText(S_PCode.this, "Enter Key", Toast.LENGTH_LONG).show(); //tNPCode.setFocusable(true); } return false; } }); 

Solutions Collecting From Web of "KeyCode_input到下一个编辑文本"

你必须使用requestFocus方法。 在你的情况下,它会是这样的:

 tCNPCode.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if(keyCode == 66) { txtCNPCode.requestFocus(); } return false; } }); 

你甚至不必使用OnKeyListener 。 只需添加行android:singleLine="true"到您的EditText 。 在这个操作之后, EditText行为就像你想要的一样。 所以,在你的具体情况下:

 <EditText android:id="@+id/txtNPCode" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18sp" android:layout_alignLeft="@+id/lblNPCode" android:layout_below="@+id/lblNPCode" android:layout_centerHorizontal="true" android:singleLine="true" /> <EditText android:id="@+id/txtCNPCode" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18sp" android:layout_alignLeft="@+id/lblCNPCode" android:layout_below="@+id/lblCNPCode" android:layout_centerHorizontal="true" /> 

解决了这个问题。

最好的方法是使用inputType的选项之一,例如: android:inputType="textPersonName"这将实现想要的效果。 检查出其他选项,它会为您节省一些时间:)

你不应该使用android:singleLine =“true”,因为它已经被弃用了。 以下是文件所述的内容:

此属性已弃用,并由inputType属性中的textMultiLine标志取代。 在更改现有布局时要小心,因为singeLine的默认值为false(多行模式),但是如果为inputType指定了任何值,则缺省值为单行模式。 (如果findsingleLine和inputType属性,则inputType标志将覆盖singleLine的值)。

考虑IME选项,这里的好描述http://androidcookbook.com/Recipe.seam;jsessionid=C824437B48F346E23FBE5828969029B4?recipeId=422和这里的文档http://developer.android.com/reference/android/widget/TextView.html#attr_android :ime选项 。

唯一需要的是在每个EditText上添加属性android:imeOptions =“actionNext”。 键盘出现与下一个键,其中input曾经是,并允许导航到下一个EditText。

但是“actionNext”的顺序是从上到下。 例如,如果你有水平布局:

 <LinearLayout android:orientation="horizontal" > <EditText android:id="@+id/et1" android:imeOptions="actionNext" /> <EditText android:id="@+id/et2" android:imeOptions="actionNext" /> </LinearLayout> 

et2从来没有得到重点。 你应该在代码中修复它:

 et1.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { switch (actionId) { case EditorInfo.IME_ACTION_NEXT: boolean result = false; TextView v1 = (TextView) v.focusSearch(View.FOCUS_RIGHT); if (v1 != null) result = v1.requestFocus(View.FOCUS_RIGHT); else if (!result) { v1 = (TextView) v.focusSearch(View.FOCUS_DOWN); if (v1 != null) result = v1.requestFocus(View.FOCUS_DOWN); } if (!result) v.onEditorAction(actionId); break; default: v.onEditorAction(actionId); break; } return true; } }); 

原始链接: https : //groups.google.com/forum/?fromgroups=#!topic/ android-developers/ OykOG6XtE8w

只需在xml布局文件中将最大行数设置为EditText框: android:maxLength="1"