2014-07-09 4 views
0

Ну, это делает меня немного сумасшедшим.Клавиша «Далее» на мягкой клавиатуре не отображается

У меня есть 2 поля «Редактировать текст» и кнопка. Я хочу, чтобы мягкая клавиатура отображалась, когда 1-й текст редактирования получает фокус. Я хочу, чтобы на мягкой клавиатуре отображалась клавиша «Далее», поэтому при нажатии курсора курсор переходит во второе поле «Редактировать текст».

Когда второе поле «Редактировать текст» получает курсор, я все же хочу, чтобы на мягкой клавиатуре отображалась «Следующая». Нажатие «Далее» теперь отключит мягкую клавиатуру и сделает фокус нажатием кнопки.

Вот мой код:

EditText editText1 = (EditText) findViewById(R.id.some_text_field); 
EditText editText2 = (EditText) findViewById(R.id.some_other_text_field); 

editText1.setInputType(EditorInfo.some constant); 
editText1.setFocusable(true); 
editText1.setFocusableInTouchMode(true); 

if (editText1.requestFocus()){ 
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 

    if (imm != null){ 
      imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 
    }    
} 

editText1.setImeOptions(EditorInfo.IME_ACTION_NEXT); 
editText1.setNextFocusDownId(R.id.some_other_text_field); 
editText2.setInputType(EditorInfo.some other constant); 
editText2.setFocusable(true); 
editText2.setFocusableInTouchMode(true); 
editText2.setImeOptions(EditorInfo.IME_ACTION_DONE); 

Кажется довольно просто.

Дело в том, что при первом запуске (после установки приложения) editText1 получает фокус, а дисплей мягкой клавиатуры показывает, что клавиши «Далее» нет, вместо этого отображается «Готово». Нажатие кнопки «Готово» переводит вас в editText2 (как вы хотите) и меняет «Готово» на «Далее. Нажатие« Далее »теперь оставляет фокус на editText2 и отклоняет мягкую клавиатуру.

Если вы сейчас коснитесь editText1, дисплеи и клавиша «Next» выглядит как его предполагается.

Что я могу сделать, чтобы получить правильное поведение (editText1 получает фокус, «Next» отображается) произойдет при первом запуске этой деятельности?

Я думал, что editText1.setImeOptions (EditorInfo.IME_ACTION_NEXT) должен был отобразить клавишу «Далее». Что мне не хватает?

ответ

3

Вы пытались сделать то же самое из файла макета. Я сделал это в файле макета и работает. Ниже мой рабочий код для входа в систему edittexts

<EditText 
    android:id="@+id/et_sign_in_with_email_email" 
    style="@style/SignInEditText" 
    android:layout_below="@id/rl_titlebar_signin" 
    android:layout_marginTop="16dp" 
    android:hint="@string/hint_email" 
    android:imeOptions="actionNext" 
    android:inputType="textEmailAddress" > 
</EditText> 

<EditText 
    android:id="@+id/et_sign_in_with_email_pwd" 
    style="@style/SignInEditText" 
    android:layout_below="@+id/et_sign_in_with_email_email" 
    android:layout_marginTop="20dp" 
    android:hint="@string/hint_pwd" 
    android:imeOptions="actionDone" 
    android:inputType="textPassword" /> 
+0

Я упомянул высоту и атрибут width в моем файле стилей. Однако приведенный выше пример, чтобы показать imeOptions – Chamu

+0

да, я попробовал его в xml, и это не сработало. – user1126515

0

для перемещения фокуса к следующему полю редактирования добавить

android:imeOptions="flagNavigateNext" 

и отклоняя клавишу с Done нажмите добавить

android:imeOptions="actionDone" 
Смежные вопросы