我知道这种行为不是预期的,也不是标准的,但我很好奇它是否可以实现。 谷歌也意识到,正常大xlarge计划不是最好的,所以它已从 Android 3.2弃用。 (布局swXXXdp将是我的最佳选择)强制设备从资源文件夹获取资源
但是,有3.2下的设备,我必须支持,并可能因为这个系统的行为不端。
主要问题:
的Galaxy Note 1和银河标签1(与同规格的其它设备)从同一个文件夹layout-large
选择的资源。但合理的,我需要在7英寸以下和7英寸以上的屏幕上制作不同的布局。我知道我可以为“异常设备”创建一个单独的文件夹(如提到的here所示的layout-large-xhdpi-1280x800),但是之后我必须在不同文件夹中保留几个几乎(或确切)相同的xml文件,因为这些文件某些设备。
因此,我们的目标是只为7英寸以下的设备维护一个xml包(文件夹),并且为7英寸以上的设备维护一个xml包(文件夹)。我知道,有技巧,如:
- 命名XML-S不同(main.xml中和主large.xml),并在代码选择决定,但即使设备不能决定他们自己从代码来看,它们究竟有多大(例如7英寸平板电脑可以从6.8到7.8英寸规模)。另外,我想用资源文件夹更“androidy”的方式。
- 正如我所提到的那样维护异常文件夹。
layout
,layout-large
,layout-specifictags1
,layout-specifictags2
并且该列表可以扩大。另外,specifictags1,tags2和normal具有完全相同的xml文件,但设备不需要从layout-large
中进行选择。全部原因是为了避免这种情况。 - (编辑)使用别名的想法是由@Joe Malin提出的。不幸的是,我不能在
layout-large-xhdpi-1280x800
中创建一个名为main.xml的别名,它指向layout
中的main.xml,因为它指的是自我然后(使无限循环)。所以我将不得不维护一个fakemain.xml在layout-large-xhdpi-1280x800
引用main.xml只存在于layout
。但是,我还需要在layout
中使用fakemain.xml,因为那样我就不必关心代码中的布局,而只使用fakemain.xml这是一个别名。但这个解决方案仍然可能工作,但不实际工作,不幸。如果我在layout
,layout-large
和layout-large-xhdpi-1280x800
中有一个用于银河注释的fakemain.xml,则该别名指向layout-large
之一,而我通过使用该别名没有取得任何成效。
问:
布局sw600dp概念将给予我的最好的和必要的行为,但它不是在API级别13
- 支持有没有办法强制设备从这个文件夹中选择,或写在它的变量(与Java反射? - 我知道这是非常糟糕的)行为像普通屏幕不大?
- 是否有保持只有两个XML包(文件夹)的方式:
- 一个用于下-7寸的设备,
- 和一个用于上述的7英寸的设备。
不幸的是,我不能让一个别名命名xyz.xml在'布局大xhdpi-1280×800
前两个案件
layout.xml
''在'layout'中引用了xyz.xml,因为它指的是自我(使无限循环)。我在编辑OP – abbath 2013-03-12 11:48:20中进一步解释了这一点。我发现了一个解决方案及其别名,但不是您链接的类型。 – abbath 2013-03-18 11:08:04