【问题标题】:android screen orientation handling for spinner微调器的android屏幕方向处理
【发布时间】:2026-02-07 08:15:01
【问题描述】:

我有一个活动,其中有一个微调器。因为对于纵向和横向模式,我有不同的布局,所以我在 onConfigurationChanged 方法中更改布局

@Override
    public void onConfigurationChanged(Configuration conf) {
        super.onConfigurationChanged(conf);
        setContentView(R.layout.layout);
        initUI();
    } 

但问题是当我改变方向时,我的微调器会重新创建,所以如果微调器在纵向模式下打开,它会在横向模式下关闭。我的要求是:如果它在任何模式下打开,它应该在方向改变后打开.请告诉我如何处理这种情况。

【问题讨论】:

标签: android spinner screen-orientation


【解决方案1】:

试试 spinner 的 performClick() 方法

【讨论】:

    【解决方案2】:

    要停止重新创建 Spinner,您可以将其添加到您的清单文件中

    <activity android:name=".Activity_name"
              android:configChanges="orientation|keyboardHidden">
    

    但是通过添加这个,当你旋转你的设备时你的布局不会自动改变,所以你必须像这样手动管理,

    @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
                setContentView(R.layout.login_landscape);
            }
            else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
                setContentView(R.layout.login);         
            }
        }
    

    更多信息可以查看我的回答here

    【讨论】:

    • 我也在做同样的事情,但在设置布局后仍然需要设置微调器值,否则微调器将是空白的。
    • 试试上面的代码它会保持状态。由于没有重新创建 Activity。
    • 我试过上面的代码。我在微调器值中看到空白,因为我在纵向模式下有一个微调器,而在横向模式下我有另一个具有相同 id 的微调器。
    【解决方案3】:

    一旦方向改变,destroy 方法就会被调用,并且你的 Activity 会再次重新创建。为了避免破坏方法被调用,您需要在清单文件中添加以下代码。但在这种情况下,只能使用一种布局,如果您想重新发布内容,则需要动态进行。

    android:configChanges="orientation|keyboardHidden"
    

    【讨论】:

      最近更新 更多