肖像为手机,平板电脑(Android的布局)景观

问题描述:

因此,我正在为Android的应用程序,我想强制横向平板电脑和肖像方向手机。然而,看起来好像我只能从我所看到的方向锁定方向锁定,而这种方向锁定会破坏希望为设备分配两个方向的目的。肖像为手机,平板电脑(Android的布局)景观

片:风景 电话:肖像

说得更多的技术。

我在“res/layout-xlarge-land”中为平板电脑上的景观设计进行了布局,并且在“res/layout”中拥有原始布局,我只是想明确使用layout-xlarge-land作为平板电脑。没有别的,基本上只使用横向的xlarge设备。

谢谢!

根据设备密度设置特定的方向可能不起作用,因为有电话密度高于平板电脑。

我所做的是通过设置活动标记的属性在这样的清单文件来禁用该设备的方向传感器:

android:screenOrientation="nosensor" 

当你运行你的应用程序,默认情况下纵向设置为手机和平板电脑的景观(因此它会从layout-xlarge-land中选择xml文件)。并且,由于您已设置了方向锁定,因此它仍保持此方向。

+6

不是真的有用,我的Nexus 7被认为是手机,并以纵向模式显示。 – Nezneika

+0

我的回答解决了这个问题,请检查一下 – Dante

+0

你是如何设置方向锁的? –

我不完全确定你在说什么,但似乎应该只是测量分辨率并采取相应措施。我的意思是,你怎么知道它是手机还是平板电脑而不是分辨率不同?

+0

嗯,我想把它放在技术上。我在“res/layout-xlarge-land”中为平板电脑上的景观设计进行了布局,并在“res/layout”中拥有原始布局,我只是想明确使用平板电脑的layout-xlarge-land。没有别的,基本上只使用横向的xlarge设备。 – rwarner

+0

您可以在代码中指定如何布局屏幕并根据屏幕尺寸从适当的布局xml中拉出。 –

您可以测量设备的实际尺寸(英寸),然后使用编程方式设置方向:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

要获得设备,您可以物理尺寸使用公布的代码here

它不是100%准确的,但它足以决定设备的哪个王者正在运行应用程序。

在布局菜单中的“布局大”文件夹布局和布局菜单中的“布局”文件夹中设置llPhone布局,设置布局称为llTablet。通过菜单引用用户输入的第一个布局。然后检查你是否可以参考它。如果你不能参考llPhone那么它的平板电脑。

llPhone = (LinearLayout) findViewById (R.id.llPhone) 
if (llPhone == null) { 
tablet = true; 
} 
else { 
tablet = false; 
}