Android 微调器 - 确认(不更改)选择后向前聚焦
Android Spinner - Focus forward after confirming (not changing) selection
我想开发一个 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) {}
});
当用户 select 从 Spinner 中获取不同于当前值的另一个项目时,此方法有效。但是,当用户打开对话框(输入)时它不起作用,然后 select 另一个值(但按 enter 确认当前选择)。我猜 OnItemSelected
-Event 在值没有改变时不会被触发。
有人知道我如何实现吗?
如果您不更改 selection,则微调器中的 onItemSelected
不会被调用,那么您将不得不做这样的事情
- 通过向微调器添加默认值(如“请select”)强制用户select 微调器中的某些内容。因此,如果他没有 select,您也可以显示一些错误消息,最终您的
onItemSelected
侦听器将被调用。
我最终使用了这个答案中的解决方案:(它扩展了 Spinner-class)
How can I get an event in Android Spinner when the current selected item is selected again?
然后,可以通过
将焦点转移到下一个项目
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) {
}
});
我想开发一个 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) {}
});
当用户 select 从 Spinner 中获取不同于当前值的另一个项目时,此方法有效。但是,当用户打开对话框(输入)时它不起作用,然后 select 另一个值(但按 enter 确认当前选择)。我猜 OnItemSelected
-Event 在值没有改变时不会被触发。
有人知道我如何实现吗?
如果您不更改 selection,则微调器中的 onItemSelected
不会被调用,那么您将不得不做这样的事情
- 通过向微调器添加默认值(如“请select”)强制用户select 微调器中的某些内容。因此,如果他没有 select,您也可以显示一些错误消息,最终您的
onItemSelected
侦听器将被调用。
我最终使用了这个答案中的解决方案:(它扩展了 Spinner-class)
How can I get an event in Android Spinner when the current selected item is selected again?
然后,可以通过
将焦点转移到下一个项目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) {
}
});