我有一组四个EditText视图,用于输入4位代码。这些中的每一个都设置为maxLength为1,因为它们只保留一个数字。
现在,我希望允许我的用户复制四位数的代码并将其直接粘贴到这四个字段中。
我尝试使用以下方法检测粘贴事件:
@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;
}
类似于this question,但是我无法在回调中返回粘贴的文本。
我也尝试过:
重写乐趣beforeTextChanged(s:CharSequence ?,开始:Int,计数:Int,之后:Int){ }
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
但是在粘贴的文本中,我只能得到1个字符,因为maxLength设置为1。
如何实现所需的行为?
答案 0 :(得分: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
}
}
}