У меня есть три смежных поля EditText, каждый из которых заполняется 6 символами выбора пользователя. То, что я хочу, состоит в том, что, как только пользователь закончит ввод 6-го символа в первом поле EditText, курсор автоматически переключится во второе поле EditText. То же самое для второго -> третьего. Как я могу это сделать?Перемещение курсора в поле EditText? Android
1
A
ответ
1
Просто введите KeyListener
в ваш первый EditText
(скажем, editTextOne
).
На каждой нажатой клавише проверьте, равна ли длина editTextOne
равным 6, и переместите курсор ко второму, вызвав метод requestFocus()
на ваш второй editText
(т. Е. editTextTwo.requestFocus()
).
1
использовать как этот
edittext1.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(edittext1.getText().toString().length()==6) {
edittext2.requestFocus();
}
return false;
}
});
0
Попробуйте это.
mEtText.addTextChangedListener (новый TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
if(mEtText.getText().length() == 6){
secondEditText.requestFocus();
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
0
Необходимо в данном случае использовать соответствующий приемник: TextWatcher
Взаимодействуя с кодом ниже:
package com.example.stackoverflow;
import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.text.InputFilter;
import android.text.TextWatcher;
import android.view.Menu;
import android.widget.EditText;
import android.widget.Toast;
public class SimpleActivity10 extends Activity {
private final short MAXCHAR = 6;
private EditText editText1, editText2, editText3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity10);
editText1 = (EditText) this.findViewById(R.id.editText1);
editText2 = (EditText) this.findViewById(R.id.editText2);
editText3 = (EditText) this.findViewById(R.id.editText3);
editText1.addTextChangedListener(textWatcher1);
editText2.addTextChangedListener(textWatcher2);
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(MAXCHAR);
editText1.setFilters(FilterArray);
editText2.setFilters(FilterArray);
editText3.setFilters(FilterArray);
}
private TextWatcher textWatcher1 = new TextWatcher() {
@Override
public void afterTextChanged(Editable editable) {
int messageLength = editable.toString().length();
if (messageLength == MAXCHAR) {
Toast.makeText(getApplicationContext(), "EditText 2 get focus!", Toast.LENGTH_SHORT).show();
editText2.requestFocus();
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
};
private TextWatcher textWatcher2 = new TextWatcher() {
@Override
public void afterTextChanged(Editable editable) {
int messageLength = editable.toString().length();
if (messageLength == MAXCHAR) {
Toast.makeText(getApplicationContext(), "EditText 3 get focus!", Toast.LENGTH_SHORT).show();
editText3.requestFocus();
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.simple_activity10, menu);
return true;
}
}
И макет:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".SimpleActivity10" >
<EditText
android:id="@+id/editText1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10" />
<EditText
android:id="@+id/editText3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10" />
</LinearLayout>
Смежные вопросы
- 1. перемещение позиции курсора в текстовом поле
- 2. Установить положение курсора в edittext android
- 3. Android IME, установите положение курсора в EditText
- 4. EditText в ListView повторяет позицию курсора android
- 5. Изменение цвета курсора EditText в Android 3.0
- 6. Перемещение курсора IME в Edittext, как его предотвратить?
- 7. Перемещение курсора в Android, выбранное в начало
- 8. Перемещение курсора в JavaScript
- 9. Как отключить позиционирование курсора и выбор текста в EditText? (Android)
- 10. Android XML - перемещение между полями EditText
- 11. Linux - перемещение курсора курсора visual
- 12. Перемещение курсора в Java
- 13. Перемещение курсора в UITextView
- 14. Редактирование Edittext: перемещение курсора к следующему и множественному входу
- 15. Координаты курсора Android EditText (абсолютное положение)
- 16. Android: прослушиватель EditText для изменения положения курсора
- 17. Изменение цвета указателя курсора EditText Android программно
- 18. Android, как изменить стиль курсора edittext
- 19. Перемещение курсора в следующее текстовое поле автоматически в UWP
- 20. Перемещение курсора позиции в конец строки в поле редактирования
- 21. Поле EditText Android не работает
- 22. Перемещение курсора к следующему полю
- 23. Android: запретить пользователю выбирать позицию курсора в EditText?
- 24. Позиция курсора EditText
- 25. Позиция курсора EditText
- 26. Android, Подтвердить пустое поле EditText
- 27. Android - не выбрать поле EditText
- 28. Перемещение курсора в ввода текста на веб-браузере Android
- 29. Перемещение по позициям курсора
- 30. Перемещение курсора с freemarker
Это сработало, спасибо! – scibor
@scibor Нет проблем =) –
Также последующий вопрос, после ввода последней введенной 6-символьной записи, как заставить клавиатуру закрыть экран? Я думаю, что это тесно связано? – scibor