我一直在关注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,滚动条...)无法正常工作。
请帮帮我吗?
答案 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()和createHorizontalLayout()以编程方式执行布局。
答案 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)
对我来说,缺少的部分是干净的构造。不知何故我的变化没有反映出来。 这是我执行的步骤。
创建与 layout 文件夹平行的 layout-land 文件夹。
将activity_main.xml复制到layout-land文件夹,并为景观布局修改activity_main.xml。
重要的是,您必须能够在设计视图中预览两个布局。转到布局文件的设计视图时,您会看到移动旋转类型的图标。您应该能够使用该图标在布局预览之间切换。如果能够切换,则意味着您的文件夹结构正确。您甚至可以使用此步骤执行步骤1和步骤2。 确保您修复了布局错误。
您的AndroidManifest.xml在android:configChanges =“”属性中不应包含“ orientation”项
对我来说,它现在是空的
<activity android:name="com.sudoxer.app.MainActivity" android:configChanges="">
您应该看到您的期望。