gpt4 book ai didi

android - 强制设备从资源文件夹中获取资源

转载 作者:太空狗 更新时间:2023-10-29 13:31:07 26 4
gpt4 key购买 nike

我知道这种行为既不是预期的也不是标准的,但我很好奇它是否可以实现。Google 还意识到 normal-large-xlarge 方案不是最好的方案,因此 Android 3.2 弃用了它。 (layout-swXXXdp 对我来说是最好的选择)

但是,我必须支持 3.2 以下的设备,并且可能因为这个系统而出现异常。

主要问题:

Galaxy Note 1 和 Galaxy tab 1(以及其他具有相同规范的设备)从相同的 layout-large 文件夹中选择资源。但合理的是,我需要在 7 英寸以下和 7 英寸以上的屏幕上进行不同的布局。我知道我可以为“异常设备”创建一个单独的文件夹(如提到的 layout-large-xhdpi-1280x800 here ),但是我将不得不在不同的文件夹中维护几个几乎(或完全)相同的 xml 文件因为这些特定的设备。

因此,目标是只为 7 英寸以下的设备维护一个 xml 包(文件夹),为 7 英寸以上的设备维护一个 xml 包(文件夹)。我知道有一些技巧,例如:

  1. 以不同的方式命名 xml-s(main.xml 和 main-large.xml),并在代码中决定选择哪个,但即使设备也无法从代码中决定自己,它们到底有多大(例如 7英寸的平板电脑可以返回 6.8 到 7.8 英寸的比例)。另外,我想对资源文件夹使用更“androidy”的方式。
  2. 如前所述维护异常文件夹。 layoutlayout-largelayout-specifictags1layout-specifictags2 列表可以加宽。此外,specifictags1、tags2 和 normal 具有完全相同的 xml 文件,但需要设备不要从 layout-large 中进行选择。整个原因是为了避免这种情况。
  3. (EDIT) @Joe Malin 提出了使用别名的想法。不幸的是,我无法在 layout-large-xhdpi-1280x800 中创建一个名为 main.xml 的别名,它引用了 layout 中的 main.xml,因为它引用了自身 (制作无限循环)。所以我必须在 layout-large-xhdpi-1280x800 中维护一个 fakemain.xml,它引用仅存在于 layout 中的 main.xml。但是我还需要 layout 中的 fakemain.xml,因为这样我就不必关心代码的布局,而只使用别名 fakemain.xml。然而,这个解决方案仍然可以工作,但不幸的是在实践中不起作用。如果我在 layoutlayout-largelayout-large-xhdpi-1280x800 中有一个 fakemain.xml 用于 galaxy note,那么别名点到 layout-large 一个,但我使用别名一无所获。

问题:

layout-sw600dp 概念将授予我最佳和所需的行为,但它在 API 级别 13 下不受支持。

  • 有没有办法强制设备从此文件夹中进行选择,或者覆盖其变量(使用 java 反射?- 我知道这很糟糕),使其表现得像普通屏幕一样不大?
  • 有没有办法只维护两个xml包(文件夹):
    • 一个用于 7 英寸以下的设备,
    • 还有一个用于 7 英寸以上的设备。

最佳答案

However, there are devices under 3.2 which I have to support

不是很多。

Is there a way to force a device to choose from this folder, or to write over its variable (with java reflection? - I know that's pretty bad) to behave like normal screen not large?

没有。但是,您可以找出那几个设备的型号并选择为它们加载不同的布局(例如,R.layout.main 通常,R.layout.you_are_worrying_about_this_way_too_much适用于 API 级别 13 之前的少数 7 英寸平板电脑型号)。

is there a way to maintain only two xml package (folder): one for under-7inch-devices, and one for above-7inch devices

为了安全起见,我会选择三个:

  • res/layout/ for below-7"
  • res/layout-sw600dp/ 7"及以上
  • res/layout-xlarge/,对于少数 XOOM、Tab 10.1 和这样就没有升级到 3.2

关于android - 强制设备从资源文件夹中获取资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15349791/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com