У меня есть набор из четырех представлений EditText, которые используются для ввода 4-значного кода. Каждому из них присвоено значение maxLength, равное 1, потому что они содержат одну из этих цифр.
Теперь я хочу разрешить моим пользователям копировать четырехзначный код и вставлять его прямо в 4 поля.
Я попытался обнаружить событие вставки, используя:
@Override
public boolean onTextContextMenuItem(int id) {
boolean consumed = super.onTextContextMenuItem(id);
switch (id){
case android.R.id.cut:
onTextCut();
break;
case android.R.id.paste:
onTextPaste();
break;
case android.R.id.copy:
onTextCopy();
}
return consumed;
}
как в этот вопрос, но у меня нет возможности вернуть вставленный текст в обратном вызове.
Я также пробовал:
переопределить удовольствие beforeTextChanged (s: CharSequence ?, начало: Int, count: Int, after: Int) { }
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
Но из вставляемого текста я получаю только 1 символ, я думаю, потому что для maxLength установлено значение 1.
Как мне добиться желаемого поведения?
Может это поможет тебе
private void pasteText() {
ClipboardManager clipboardManager = (ClipboardManager)
getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboardManager.hasPrimaryClip()) {
ClipData.Item item = clipboardManager.getPrimaryClip().getItemAt(0);
CharSequence ptext = item.getText();
for(int i = 0 ; i <= ptext.length() ; i++){
// 4 cases and paste to 4 edittexts
}
}
}
@abbasjafary, это действительно старый вопрос, и я давно не разрабатывал Android. Но я постараюсь помочь. В чем твоя проблема?
Спасибо за ваш ответ, у меня есть шесть редактируемых текстов для ввода шестизначного кода, и я хочу, чтобы когда пользователь копировал и прошёл шестизначный код, шесть редактировали текст автоматически, заполняя их. Я надеюсь ты понимаешь о чем я
Привет, @keser, не могли бы вы объяснить поподробнее?