Android Layout土地无法正常工作

时间:2014-03-18 10:09:45

标签: android layout onconfigurationchanged android-configchanges

我一直在关注stackoverflow中的问题,我已经尝试了所有我见过的但是布局 - 土地不起作用。 在我的代码中,我有方法onConfigurationChanged

@Override
 public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);           
}

清单文件:

<activity
        android:name="com.sde.PlayerTrack"
        android:theme="@style/AppTheme"
        android:configChanges="orientation|keyboardHidden|screenSize"
        >
    </activity>

我还尝试在android清单条目中删除:configChanges然后布局陆载,但我拥有的组件(TextView,滚动条...)无法正常工作。

请帮帮我吗?

5 个答案:

答案 0 :(得分:16)

从清单文件中的orientation移除android:configChanges,并将横向布局 xml 文件放入layout-land文件夹。

答案 1 :(得分:6)

最后,我的解决方案是:

AndroidManifest.xml文件:

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

在活动中实现onConfigurationChanged(Configuration newconfig)方法:

@Override
 public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);     
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            createHorizontalalLayout();            
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            createVerticalLayout();             
        }
}

使用createVerticalLayout()和createHorizo​​ntalLayout()以编程方式执行布局。

答案 2 :(得分:0)

如果您运行的是Android Emulator 4.4,请检查模拟器,它的方向存在某种错误。我有同样的问题将我的模拟器改为4.0.3,一切正常。请访问此处了解更多详情site

答案 3 :(得分:0)

我遇到了这个问题,经过多次调试后发现build.gradle文件中的罪魁祸首。 Android工作室添加了行

sourceSets { main { res.srcDirs = ['src/main/res', 'src/main/res/layout-land'] } }

当我在试图手动创建布局之前。我删除了该行并恢复了正常功能。

答案 4 :(得分:0)

对我来说,缺少的部分是干净的构造。不知何故我的变化没有反映出来。 这是我执行的步骤。

  1. 创建与 layout 文件夹平行的 layout-land 文件夹。

  2. 将activity_main.xml复制到layout-land文件夹,并为景观布局修改activity_main.xml。

  3. 重要的是,您必须能够在设计视图中预览两个布局。转到布局文件的设计视图时,您会看到移动旋转类型的图标。您应该能够使用该图标在布局预览之间切换。如果能够切换,则意味着您的文件夹结构正确。您甚至可以使用此步骤执行步骤1和步骤2。 确保您修复了布局错误。

  4. 您的AndroidManifest.xml在android:configChanges =“”属性中不应包含“ orientation”项

对我来说,它现在是空的

<activity android:name="com.sudoxer.app.MainActivity" android:configChanges="">
  1. 清理项目并在更改后重建它。

您应该看到您的期望。