【问题标题】:layout-land xml files does not work with onConfigurationChanged call backlayout-land xml 文件不适用于 onConfigurationChanged 回调
【发布时间】:2011-03-17 08:28:53
【问题描述】:

纵向和横向模式有不同的布局,我还需要覆盖 onConfigurationChanged() 回调。但问题是当我将手机方向更改为横向时,横向布局不起作用。

谁能告诉我这是onConfigurationChanged 回调问题还是其他原因?

任何帮助将不胜感激。

【问题讨论】:

  • 你在清单文件中声明了 android:configChanges="orientation" 吗?
  • 是的,我已经在我的清单文件中声明了这样的......android:configChanges="keyboardHidden|orientation"。

标签: android layout onconfigurationchanged


【解决方案1】:

我还需要重写 onConfigurationChanged() 回调

为什么?

但问题是当我将手机方向更改为横向时,横向布局不起作用。

我猜“不起作用”是指横向布局不生效。鉴于您所做的,这是预期的行为。

要解决此问题,最好删除android:configChanges="keyboardHidden|orientation"。放入该属性应作为最后的手段,通常用于没有单独的纵向和横向布局文件的活动。

【讨论】:

  • 我必须重写 onCofigurationChanged 回调,因为我必须动态设置位图大小。
  • @sajjoo:您不需要覆盖 onConfigurationChanged() 来执行此操作。作为在onCreate() 中设置 UI 的一部分,您将加载位图——“动态设置位图大小”。
  • 我使用的是来自第三个来源的应用程序代码,它确实在 Manifest 中有 android:configChanges。问题是它在 Android 4.x 设备/模拟器上工作正常(从 layout-land 文件夹中选择了一个布局),但在 Android 5 上没有选择布局,并且使用了纵向的默认布局。多亏了这篇文章,我终于在 Manifest 中发现了 android:configChanges 的问题
【解决方案2】:

我相信它肯定会帮助你......

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    int ot = getResources().getConfiguration().orientation;
    switch (ot) {
    case Configuration.ORIENTATION_LANDSCAPE:
        setContentView(R.layout.main_land);
        break;
    case Configuration.ORIENTATION_PORTRAIT:
        setContentView(R.layout.main);
        break;
    }
    Toast.makeText(this, "Helloo", Toast.LENGTH_SHORT).show();
}
enter code here
@Override
public void onConfigurationChanged(Configuration newConfig) {
    // TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);

    int ot = getResources().getConfiguration().orientation;
    switch (ot) {
    case Configuration.ORIENTATION_LANDSCAPE:
        setContentView(R.layout.main_land);
        break;
    case Configuration.ORIENTATION_PORTRAIT:
        setContentView(R.layout.main);
        break;
    }
}

@Override
public Object onRetainNonConfigurationInstance() {
    // TODO Auto-generated method stub
    return super.onRetainNonConfigurationInstance();
}

}

并在您的清单文件中添加这一行.. android:configChanges="keyboardHidden|orientation"

【讨论】:

  • 所以我们应该将配置代码添加到onCreateonConfigurationChanged?如果是这样,原因是什么?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多