2015-11-03 31 views
-1

有没有办法锁定不同屏幕尺寸的不同屏幕方向?因此,对于最小宽度小于600 dp的屏幕锁定纵向方向,而对于最小宽度大于600 dp的屏幕锁定横向方向?我知道这可以用setRequestedOrientation以编程方式完成,但它可以以某种方式在xml资源中完成吗?在Android.manifest中,还是通过引用res文件夹中定义的不同资源值?Android - 我怎样才能锁定不同的屏幕方向为xml配置中的不同屏幕尺寸

回答

1

方法1:使用下面的代码里面AndroidManifest.xml中每个活动:

android:screenOrientation="nosensor" 

的“nosensor”设置告诉你的应用程序使用的自然方向的装置,如果用户不会改变旋转设备。因此,平板电脑将为您的应用使用横向方向,而手机将始终使用纵向方向。

接下来,您可以通过在res文件夹中创建一个名为layout-land的文件夹为横向原生设备(即平板电脑)创建单独的布局文件。将平板电脑的XML布局文件放入layout-land文件夹中。

选项2:使用最小宽度限定符,如在Android开发者文档中描述:http://developer.android.com/training/multiscreen/screensizes.html#TaskUseSWQuali

在这种情况下,您将创建一个名为布局sw600dp res目录的布局文件夹。在那里,你会为超过600dp的设备放置备用XML文件。在您的线性布局,或相对布局的XML文件中的顶级水平,例如,一定要包括以下内容:

android:orientation="horizontal" 

在设备上的主XML文件小于600dp的,你将迫使他们垂直方向:

android:orientation="vertical" 
+0

试图在API 22下的一个简单的应用程序。它没有预期的效果。 (它没有阻止旋转。)只是一个小数据点。它肯定可能用于其他设备/ API级别。 – Anders8

+0

你在说上面的option1还是option2?在这两种解决方案中,我认为选项1将在未来更可靠。 – joshgoldeneagle

+0

退缩!我尝试了选项1(nosensor方法),但是我在部分有。它没有错误,解析得很好,但正如我所提到的,什么也没做。将它放在部分中可正常工作。正如你所说,“为每项活动”。 – Anders8