我正在尝试简单地在我旋转设备时更改setlayout,以便我可以为适合Android设备当前方向的特定活动设置视图布局,但我对实现最佳实现方式感到困惑此
我已经提到了以下android doc:
我不需要保存Activity中的任何数据,所以不要认为我真的需要使用onRetainNonConfigurationInstance()方法。我尝试通过onConfigurationChanged()方法自己处理方向更改,在那里我找到当前方向,然后根据需要设置布局,但这会导致视图不再有效。我还需要在onConfigurationchanged()中做些什么吗?
由于
答案 0 :(得分:2)
要获取横向视图而不是纵向视图的不同视图,您可以将布局XML文件放在以下两个资源文件夹中:
/ res / layout - Portrait
/ res / layout-land - Landscape
当然,如果你在两者中都有相同的视图,否则你可能会得到一些NullPointerExceptions。
答案 1 :(得分:2)
您可以在res下创建一个名为“res \ layout-land”的新目录,在“res \ layout”和“res \ layout-land”中创建一个具有相同名称的.xml布局文件。例如:“myLayout.xml”。当处于landsacpe方向时,Android将自动使用-land目录中的布局,而当处于纵向时,Android将自动使用另一个布局。
答案 2 :(得分:1)
在您的项目res文件夹中,您应该有一个布局文件夹。在res中创建一个新文件夹并将其命名为layout-land。现在创建第二组layout.xml文件,这些文件特定于面向横向的设备。将它们保存在此layout-land文件夹中。系统将为您处理其余部分。
check out this page并向下滚动到“提供Alernative资源”,了解有关可在res文件夹中使用的不同限定符的更多详细信息。
编辑:你使用的是什么设备?我创建了一个快速测试项目,它只是一个hello world,但显示存储在res / layout-land文件夹中的布局中的不同文本。
我在清单中尝试了一次,没有configChanges="orientation"
一次。当我运行应用程序并切换方向时,布局的行为与预期一致。当设备为横向时,将显示layout-land中的布局,当设备处于纵向时,将显示来自普通布局文件夹的布局。
我测试的设备是Sidekick 4g。 Download the test project如果您愿意,请在设备上报告其工作原理。