Изменить Focus на EditText Android
У меня есть 2 EditText в моей деятельности и установите для параметра maxLength
значение 5.
Теперь я хочу установить фокус на editText2
, если длина 5 достигнута в editView1
...
Я попробовал:
editView1.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(editView1.getText().length() == 5)
editView2.requestFocus();
return false;
}
});
Но это не сработает.
Ответы
Ответ 1
Это работает
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;
}
});
Ответ 2
Сообщение Марка Юшкеита почти идеально для меня.
Но в моем случае мне пришлось проверить, является ли 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;
}
});
Ответ 3
Запросить фокус не работает над основной нитью, я думаю. Но я не уверен.
Это сработало для меня,
_edittext.post(new Runnable() {
public void run()
{
_edittext.requestFocus();
}
});
Ответ 4
EdName.setOnKeyListener(новый OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
System.out.println("Yes Bud");
if(EdName.length()== 5)
{
EdBin.requestFocus();
}
return false;
}
});
Ответ 5
В файле androidmanifest.xml добавьте следующий код в тег активности:
android:windowSoftInputMode="stateHidden"