开始在某些7英寸Android机型上测试我的应用程序时,我遇到了一个奇怪的行为,我想了解其他人是否也发现了相同的问题以及人们建议的解决方法。

详细信息如下:

该应用程序具有完整的平板电脑支持,该支持由布局的限定符触发。 xlarge设备进入平板电脑模式,在屏幕上显示多个片段。

对于较新的Android版本,还存在一些设置变量的值,这些变量使用sw600dp限定符和xlarge限定符更改流上的UI。

问题:

我现在正在Kindle Fire和RIM BlackBerry Playbook上进行测试,并且还希望支持即将推出的Google Nexus平板电脑(或称其为其他产品)和其他7英寸尺寸的设备。

剧本和壁炉都具有7英寸屏幕和1024x600屏幕分辨率。

然而,这本剧本似乎欺骗了Android,使它认为这是一个xlarge设备,而大火却没有这么做。

平板电脑和标准UI都可以正常工作,但是imho平板电脑模式更好,可以在7英寸设备上使用。但是,如果我将布局推入大型预选赛中以使平板电脑模式也起火,我也会得到它,例如在Note或其他相当小的设备上。

使用Android 4x,我可以使用sw600dp和其他限定符,但是较旧的版本呢?我假设7英寸设备的行为应该像平板电脑,但是例如笔记..

这种情况下的最佳做法是什么?我对报告xlarge的剧本的观察正确吗?

最佳答案

然而,这本剧本似乎欺骗了Android,使它认为这是一个xlarge设备,而大火却没有这么做。


设备制造商可以根据尺寸和密度选择设备放入哪个存储桶。对于RIM和Amazon这样的制造商来说,这是双倍的需求,他们不希望Play商店,因此不必遵守Play商店所规定的任何特定兼容性要求,因此欢迎他们垂听Google的指导。


  这种情况下的最佳做法是什么?


我不能告诉你“最好的”。

但是,如果您希望特定设备覆盖某些布局以使用特定大小,这就是我会尝试的方法(假设您将在正常情况下使用的布局称为R.layout.main):

步骤#1:创建res/layout/main_funky.xml作为与res/layout-xlarge/main.xml的符号链接或硬链接(对于-land等也是如此)。

步骤#2:在Java代码中,无论您引用R.layout.main(例如,onCreateView()Fragment)在哪里,都要根据R.layout.main数据决定是加载R.layout.main_funky还是android.os.Build来检测这些奇数球设备型号。由于R.layout.main_funky是您常规的main布局之一,因此所有依赖于小部件的代码都不受此选择的影响。

步骤#3:在您的特定情况下,将MMPD(魔术Maven小精灵灰尘)添加到步骤#1和#2 ... :-)


  我对报告xlarge的剧本的观察正确吗?


我买了一本《 Playbook》,确定RIM的发行模式不...令人不快,并为此做了最少的准备。我没有尝试查看它是否是-large-xlarge或其他。

就是说,NOOK Tablet IIRC受此困扰(声称是-xlarge而不是-large)。

我希望Google Nexus平板电脑能够成功实现这一目标,并且能够运行-sw600dp和亲属都能使用的足够新的Android版本。

10-04 19:52