不调用onCreate更改方向

6
我想在不调用onCreate方法的情况下更改布局。我还在我的活动中定义了android:configChanges="orientation|keyboardHidden",但它没有调用onCreate方法,但是在横向模式下布局没有适当地调整。
我的当前布局如下所示。 alt text 在横向模式下更改方向后,它看起来像这样: alt text 但是在横向模式下,我希望得到以下结果。 alt text 是否有任何自动相邻属性?
我该怎么做?

你想让你的应用程序默认为横屏模式,还是你在尝试什么? - Octavian Helm
6个回答

4

当视图从纵向模式转换为横向模式时,没有自动调整属性。

对于要在横向模式下显示��图像

创建一个filename.xml文件并为横向模式设计您的布局。 将文件名设置为您在活动中使用的布局文件夹中以前的xml文件的名称。

在res/中创建名为layout-land的文件夹,然后将该filename.xml文件保存在res/layout-land文件夹中。

当方向从纵向模式更改为横向模式时,它将自动调用res/layout-land/filename.xml。

或者您也可以使用

    @Override
    public void onConfigurationChanged(Configuration newConfig) {

      super.onConfigurationChanged(newConfig);

      if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
          //your code
      } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
         //your code
      }
    }

1

这是一个设计错误。它是基于对安卓团队的“方便”而选择的http://goo.gl/zoCJV。责任在于安卓团队。我对文档中使用的语气感到厌恶,这表明这不是他们的错。 - Pacerier

1
你可以在 AndroidManifest.xml 文件中的 Activity 标签中添加 android:configChanges="orientation"。 试试看。

0

把这个放在你的清单里,兄弟。。

android:configChanges="orientation|keyboardHidden|screenSize|uiMode"

它解决了你和我的问题:D


0

你只需要在 AndroidManifest.xml 文件中的 activity 标签中添加 android:configChanges="orientation|keyboardHidden",就可以解决问题了。


0
我假设您使用LinearLayout,因为您没有明确说明,但是LinearLayout类中有一个名为setOrientation()的函数可以解决此问题。 您必须在Java文件中创建布局的实例(您可能已经完成了这一步),然后在窗口上创建方向更改或调整大小事件侦听器。 然后,根据屏幕方向将方向更改为水平/垂直即可。

我正在使用TableLayout。这在LinearLayout中是否可行? - Kamran Omar
如果可能的话,请为我提供LinearLayout的示例代码。 - Kamran Omar
是的,使用LinearLayout非常容易,你可以在任何地方找到源代码。 - Steven Shih

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接