Подтвердить что ты не робот

Установите следующий EditText, сфокусированный и редактируемый на KEY_DOWN

У меня есть макет с двумя редакторами. Мне нужно установить второй, сфокусированный и редактируемый, когда клавиша ввода будет нажата на первую. У меня есть код для настройки фокуса, но я не могу начать набирать, когда второй получает фокус.

PS Мне также нужно, чтобы edittext был ровно одной строкой без возможности создания дополнительных строк. Он работает также. pss android 2.3

Код XML:

<EditText
            android:id="@+id/email"
            style="@style/profileLoginInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" android:hint="@string/email" android:ems="10" android:lines="1" android:maxLines="1" android:ellipsize="end">

            <requestFocus />
        </EditText>

<EditText
            android:id="@+id/password"
            style="@style/profileLoginInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:ems="10"
            android:inputType="textPassword" android:hint="@string/password">

Код Java:

((EditText) findViewById(R.id.email)).setOnKeyListener(new OnKeyListener(){
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event)
            {
                if (event.getAction() == KeyEvent.ACTION_DOWN)
                {
                    switch (keyCode)
                    {
                        case KeyEvent.KEYCODE_DPAD_CENTER:
                        case KeyEvent.KEYCODE_ENTER:
                        ((EditText) findViewById(R.id.password)).requestFocus();
                        return true;
                        default:
                            break;
                    }
                }
                return false;
            }
        });
4b9b3361

Ответ 1

Кажется, что он прослушивается при запуске этого кода на эмуляторе. Однако он работает на телефонах

Ответ 2

Ты слишком задумываешься об этом. Вы можете указать порядок входов EditText прямо в XML, не делая ничего в Java.

Используйте параметр android:nextFocusDown, чтобы указать, в каком поле вы хотите получить фокус, когда пользователь нажимает клавишу ввода.

Ответ 3

android:inputType="text"
android:nextFocusDown="@+id/..."

работал у меня

Ответ 4

Android: nextFocusDown Отлично работает для меня Но удалил следующий метод только тогда его работу:

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;
    }
});

Ответ 5

Помимо добавления + перед id:

android:inputType="text"
android:nextFocusDown="@+id/..."

Мне также пришлось добавить:

android:imeOptions="actionNext"