我的操作栏中有一个Spinner,它只在onCreateActionMode()中初始化一次;
问题:当微调器下拉可见并且我尝试旋转屏幕时,方向更改后不会保持下拉状态。
如何保持状态,以便在纵向模式下可以看到微调器下拉列表,然后在横向模式下更改方向后,下拉列应该可见。
另请告诉我们用于检查下拉列表在给定点是否可见的API。也是一个强有力地显示下拉的API。
我还在我的清单文件中指定了configChanges =“orientation”。
答案 0 :(得分:0)
我找到了一个非常难看的解决方案('动作'发生在 onConfigurationChanged 方法):
在调用 setContentView 之前,请检查下拉视图是否显示为(*),如果是,请保存当前在微调器中选择的位置({ {1}})。
调用 setContentView 并设置微调器适配器后,如果步骤1中显示了下拉视图,请通过调用 performClick 强制显示下拉视图旋转器:
int pos = spinner.getSelectedItemPosition()
(*)检查是否显示下拉视图是比较棘手的部分。我还没有找到一种让我知道是否显示下拉视图的方法,所以我必须执行以下操作:
将微调器的按下状态保存在布尔变量中(例如,命名为 isClicked )。
为微调器和 onTouch 方法集 isClicked 设置 onTouchListener 为true(当点击微调器时,dropdwon视图打开,因此 isClicked == true 表示会显示下拉视图。
覆盖 onKeyDown 或 onKeyUp ,按下后退按钮时,如果 isClicked 为true,则将其设置为false(我假设按 isClicked == true 后退意味着关闭下拉视图。
使用 onConfigurationChanged 方法中 isClicked 的值来检查是否显示了下拉视图。
就像我说的那样,这是一个难看的修复,但它是迄今为止我唯一能想到的。如果有人有其他想法,请发布。
谦卑地摘自here
还有其他解决方案如下
底线是你需要在微调器打开时捕获spinner.setSelection(pos);// this way we make sure that the same item
// remains selected after rotating the device
spinner.performClick(); //show the dropdown view
(一些布尔变量),并且当活动status
需要初始化微调器状态时configChange
希望它有所帮助!!