Android 我可以强制微调器的下拉视图在方向更改时保持可见吗?
我不知道从标题中是否清楚我问了什么,所以这里有一些复制步骤(假设您有一个带有微调器的布局):Android 我可以强制微调器的下拉视图在方向更改时保持可见吗?,android,drop-down-menu,spinner,Android,Drop Down Menu,Spinner,我不知道从标题中是否清楚我问了什么,所以这里有一些复制步骤(假设您有一个带有微调器的布局): 点击微调器>下拉列表打开 将设备从纵向旋转到横向(反之亦然)>列表关闭 我的问题是,我想在旋转设备后保持列表打开。我知道,如果覆盖OnConfiguration Changed,这通常是可能的,但我已经为横向模式定义了不同的布局,因此在我的OnConfiguration Changed方法中,我必须调用setContentView并为横向微调器设置适配器,这将关闭在纵向模式下打开的下拉视图 是否有办法防
是否有办法防止下拉列表在旋转设备后关闭或强制显示?默认情况下,从纵向切换到横向的行为是重新启动活动。因此,您可以将微调器状态保存到某个位置,例如共享引用,并在重新启动活动时读取它(在onCreate()或onResume()方法中)。我发现了一个非常难看的解决方案(“操作”发生在onConfiguration Changed方法中):
int pos=spinner.getSelectedItemPosition()
)spinner.setSelection(pos);// this way we make sure that the same item
// remains selected after rotating the device
spinner.performClick(); //show the dropdown view
- 在布尔变量中保持微调器的按下状态(例如,命名为isClicked)
- 为微调器设置一个onTouchListener,并在onTouch方法中将isClicked设置为true(点击微调器时,DropdOn视图打开,因此isClicked==true表示显示下拉视图)
- 覆盖onKeyDown或onkeydup并且当按下后退按钮时,如果isClicked为true,则将其设置为false(我假设用isClicked==true按下后退意味着关闭下拉视图)
- 使用onConfigurationChanged方法中的isClicked值检查是否显示下拉视图
正如我所说,这是一个丑陋的解决方案,但这是迄今为止我唯一能想到的解决方案。如果有人有其他想法,请发布。谢谢你的建议,但我已经尝试了使用onSaveInstanceState/onRestoreInstanceState作为微调器,在这种情况下没有什么帮助。它只保存选定的项目,而不保存列表已打开的事实。是否有其他方法保存微调器的状态(包括下拉视图已打开的事实)?或者我可以保存dropdownview的状态?