Android EditText AutoFocus в следующий EditText, когда на maxlength
У меня есть имя пользователя и сегмент XML-пароля
<EditText
android:id="@+id/username"
android:hint="@string/username_hint"
android:layout_width="match_parent"
android:maxLength="9"
android:nextFocusDown="@+id/pswd"
android:layout_height="wrap_content">
</EditText>
<EditText
android:inputType="textPassword"
android:hint="@string/password_hint"
android:id="@+id/pswd"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</EditText>
Я хочу, когда поле имени пользователя достигнет 9-го символа для фокусировки курсора, чтобы автоматически перейти в поле пароля
Я смотрел Фокус следующего текста автоматически и пытался:
final EditText usr = (EditText) findViewById (R.id.username);
final EditText pswd = (EditText) findViewById (R.id.pswd);
usr.addTextChangedListener(new TextWatcher()
{
public void onTextChanged(CharSequence s, int start, int before, int count)
{
if (s.length() == 9)
{
pswd.requestFocus();
}
}
@Override
public void afterTextChanged(Editable arg0) {
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
});
Не большой успех. Я использую это в моем методе oncreate
, в котором я обрабатываю свою регистрационную информацию. Любые идеи или предложения будут оценены.
Ответы
Ответ 1
попробуйте, как это может вам помочь.
/** addTextChangedListener полезен, когда заполняется поле первого имени пользователя до 9-го символа * запрос автоматически сфокусируется на следующем поле */
usr.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (count == 9) {
pwd.requestFocus();
usr.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
@Override
public void afterTextChanged(Editable arg0) {
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
});
Ответ 2
Распечатайте "s"
с помощью log.d()
или что-то еще, чтобы вы могли видеть, как выглядит "s"
.
Возможно, это не так, как вы ожидаете.
В этом случае вы можете code it dirty
.
Создайте свой собственный TextWatcher
, который реализует TextWatcher и даст в конструкторе "usr"
.
чтобы вы могли получить общую длину с помощью usr.getText()
Ответ 3
Привет, я попробовал прямо сейчас, но я успел, наш код такой же, мой xml прост только два editText мой телефон Meizu версии 4.1
Ответ 4
Попробуйте сделать это по методу afterTextChanged.
также вы можете вызвать usr.clearFocus(), прежде чем запрашивать фокус на pwd.