【发布时间】:2018-02-15 01:44:26
【问题描述】:
我从一个以编程方式在我的布局上创建的AutoCompleteTextView 视图开始。用户在字段中输入有效数据后,我正在以相同的方式在第一个对象下方创建一个新的AutoCompleteTextView 对象,具有相同的参数。我将所有字段引用存储在ArrayList 中以跟上最后一个,这样我可以确保只有在底部的字段下才会有新字段(基本上是引用中的最后一个元素list) - 所以它在每个领域都会继续。
我想添加此功能:创建新字段时,我将最后一个字段的 IME 选项更改为 EditorInfo.IME_ACTION_NEXT 和 nextFocusForward 属性为新创建的字段 - 也以编程方式。我想要实现的目标:当用户在键盘上按下 Enter 时,最后一个字段的焦点会跳转到新字段。我正在使用此代码设置新的 IME 选项:
ArrayList<AutoCompleteTextView> fields = new ArrayList<>();
//Creating freshlyCreatedField, IT'S STILL NOT IN THE fields LIST!
AutoCompleteTextView currentlySelectedField = fields.get(fields.size() - 1); // last element
currentlySelectedField.setImeOptions(EditorInfo.IME_ACTION_NEXT);
currentlySelectedField.setNextFocusForwardId(freshlyCreatedField.getId());
currentlySelectedField.setSingleLine(true); //ACTV needs it to get IME to work
//Adding freshlyCreatedField to the fields list,
//so next time it will be the currentlySelectedField
但运行此代码后,当前选定的 AutoCompleteTextView 对象没有任何反应。 清除和请求焦点不起作用,并通过相反的方式使其工作(创建 +1“不可见”(技术上GONE) 字段每次)会更痛苦。
还有一件事:在选择任何其他字段并重新选择配置更改的字段后回车按钮第一次就可以正常工作!如果我能做到的话同样以编程方式,它会解决我的问题......那么,有什么想法吗? (当然,我也欢迎更好的解决方案......;))
【问题讨论】:
标签: android autocompletetextview ime