【发布时间】:2021-12-16 23:47:17
【问题描述】:
我想开发一个可以在带有外接键盘的设备上运行的 Android 应用。用户应该能够使用回车键浏览表单。现在,我遇到了 Spinner 和 Button 的问题。
(我发现)将焦点从 Spinner 转移到 Button 的唯一方法是使用 setOnItemSelectedListener:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
root.findViewById(R.id.button).requestFocus();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {}
});
当用户从 Spinner 中选择另一个项目而不是当前值时,此方法有效。但是,当用户打开对话框(输入),然后不选择另一个值(但按 enter 确认当前选择)时,它不起作用。我猜OnItemSelected-Event 不会在值不变时触发。
有人知道我该如何实现吗?
【问题讨论】:
-
也许
setOnItemClickListener会有所帮助?因为无论您点击哪个项目,都应该调用它。或者尝试在onNothingSelected中添加相同的代码(我假设当您不选择任何内容或再次选择相同的项目时可能会调用它。 -
"您不应为微调器调用 OnItemClickListener。微调器不支持项目单击事件。" (见stackoverflow.com/questions/51683253/…)。不幸的是,当同一项目保持选中状态时,不会调用
onNothingSelected...
标签: java android forms spinner android-spinner