我的Activity上有2个EditText,并将maxLength
设置为5。
现在我想将焦点设置为editText2
,如果在editView1
达到5的长度...
我尝试过:
editView1.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(editView1.getText().length() == 5)
editView2.requestFocus();
return false;
}
});
但它不起作用..
答案 0 :(得分:38)
这有效
final EditText editText1 = (EditText) findViewById(R.id.editText1);
final EditText editText2 = (EditText) findViewById(R.id.editText2);
editText1.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(editText1.getText().length() == 5)
editText2.requestFocus();
return false;
}
});
答案 1 :(得分:1)
Marc Juschkeits的帖子对我来说几乎是完美的。
但在我的情况下,我必须测试keyevent是否是一个动作,因为我在edittext中有一个具有相同长度的标准文本。
final EditText editText1 = (EditText) findViewById(R.id.editText1);
final EditText editText2 = (EditText) findViewById(R.id.editText2);
editText1.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (keyEvent.getAction() == KeyEvent.ACTION_UP) {
if (editText1.getText().length() == 5) {
editText2.requestFocus();
}
}
return false;
}
});
答案 2 :(得分:1)
我认为请求焦点不在主线程上工作。但我不确定。 这对我有用,
_edittext.post(new Runnable() {
public void run()
{
_edittext.requestFocus();
}
});
答案 3 :(得分:0)
EdName.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
System.out.println("Yes Bud");
if(EdName.length()== 5)
{
EdBin.requestFocus();
}
return false;
}
});
答案 4 :(得分:-1)
在androidmanifest.xml文件中,在activity标记中添加以下代码:
android:windowSoftInputMode="stateHidden"