在Android中编辑文本焦点
在我的应用程序中,我编辑文本如下。在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 为我的应用程序用户只按“下一步或完成”,他永远不会去追踪球。
你可以尝试添加android:nextFocusDown
属性在您的EditTexts
。
我刚刚用以下布局测试了您的代码,它按预期工作。 (预期=点击虚拟键盘集中传递给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;
}
});
}
}
仍然不适合我 –
我使用Eclipse Indigo和提供的模拟器。目标是Android 2.2(API等级8)。所以,如果你创建一个新的项目,只是复制粘贴代码,它不为你工作? – hovanessyan
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;
}
});
写完上面的代码后,我的问题就解决了,谢谢大家的回答和支持。
我把下一个重点放在下面,但没有用 –
你可以在你添加'android:nextFocusDown'的地方发布代码。只是一些'EditTexts'的xml。 –
YAA,投入的nextfocus下来ID代码后,它的正常工作感谢ü[R支持 –