gpt4 book ai didi

android - 我可以强制微调器的下拉 View 在方向更改时保持可见吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:53 25 4
gpt4 key购买 nike

我不知道标题是否清楚我问的是什么,所以这里有一些重现的步骤(假设你有一个带有微调器的布局):

  1. 点击微调器 > 打开下拉列表。
  2. 将设备从纵向旋转到横向(反之亦然)> 列表正在关闭。

我的问题是我想在旋转设备后让列表保持打开状态。我知道如果覆盖 onConfigurationChanged 这通常是可能的,但是我已经为横向模式定义了不同的布局,所以在我的 onConfigurationChanged 方法中我必须调用 setContentView 并设置适配器对于横向微调器,它关闭以纵向模式打开的下拉 View 。

有什么方法可以防止下拉列表在旋转设备后关闭或强制显示吗?

最佳答案

我找到了一个非常丑陋的解决方案(“操作”发生在 onConfigurationChanged 方法中):

  1. 在调用setContentView之前,检查下拉 View 是否显示(*),如果是,保存当前在微调器中选择的位置(int pos = spinner.getSelectedItemPosition()).

  2. 调用 setContentView 并设置微调器适配器后,如果在步骤 1 中显示了下拉 View ,则通过调用 performClick 强制显示下拉 View 旋转器:

    spinner.setSelection(pos);// this way we make sure that the same item
    // remains selected after rotating the device
    spinner.performClick(); //show the dropdown view

(*) 检查下拉 View 是否显示是比较棘手的部分。我还没有找到(还)让我知道下拉 View 是否显示的方法,所以我必须执行以下操作:

  • 将微调器的按下状态保存在一个 bool 变量中(例如,命名为 isClicked)。

  • 为微调器设置一个 onTouchListener 并在 onTouch 方法中将 isClicked 设置为 true(当点击微调器时,dropdwon View 打开,因此 isClicked == true 表示显示下拉 View )。

  • 覆盖 onKeyDownonKeyUp 并且当按下后退按钮时,如果 isClicked 为真,则将其设置为假(我假设用 isClicked==true 返回意味着关闭下拉 View )。

  • 使用 onConfigurationChanged 方法中的 isClicked 的值来检查是否显示下拉 View 。

就像我说的,这是一个丑陋的修复程序,但这是我迄今为止唯一能想到的。如果有人有其他想法,请发表。

关于android - 我可以强制微调器的下拉 View 在方向更改时保持可见吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4254401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com