2017-02-22 6 views
-1

Мне нужен мой EditText, как показано на рисунке ниже, где пользователь может ввести цифру, и после завершения указатель ограничения цифр переместится на следующий. enter image description hereРедактирование Edittext: перемещение курсора к следующему и множественному входу

enter image description here

Обновление: Пользователь может установить дату, месяц & год с клавиатуры & также нажать и установить дату от DatePicker.

ответ

0

Похоже, все, что вам нужно, это DatePicker с режимом, установленным в spinner

<DatePicker 
    ... 
    android:datePickerMode="spinner" 
    android:calendarViewShown="false" /> 
+0

Выбор даты является дополнительной функцией. –

+0

Это что-то значит? Связано ли это с «Не знаю имя функции, что я хочу»? –

0

Вы можете использовать класс TextWatcher для того, чтобы получить уведомление об изменении текста внутри EditText.

EditText mDayEditText; 
EditText mMonthEditText; 
EditText mYearEditText; 

TextWatcher dayTextWatcher = new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     // Do nothing... 
    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     if (s.length() == 2) { 
      mMonthEditText.requestFocus(); 
     } 
    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     // Do nothing... 
    } 
}; 

TextWatcher monthTextWatcher = new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     // Do nothing... 
    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     if (s.length() == 2) { 
      mYearEditText.requestFocus(); 
     } 
    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     // Do nothing... 
    } 
}; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    super.onCreateView(inflater, container, savedInstanceState); 
    View v = inflater.inflate(R.layout.your_fragment, container, false); 

    mDayEditText = (EditText) v.findViewById(R.id.text_view_1); 
    mMonthEditText = (EditText) v.findViewById(R.id.text_view_2); 
    mYearEditText = (EditText) v.findViewById(R.id.text_view_3); 

    mDayEditText.addTextChangedListener(dayTextWatcher); 
    mMonthEditText.addTextChangedListener(monthTextWatcher); 
} 
+0

Это простое решение, если у него есть 3 разных поля, но он написал, что по какой-то причине это один текстовый текст. Вы можете сократить его еще больше - дать всем полям тот же самый наблюдатель текста, который делает ((EditText) getTag()). RequestFocus(); и установите следующее поле в качестве каждого тега –

Смежные вопросы